当前位置: 首页 > 知识库问答 >
问题:

字母、数字和-'的Regex

柴彬
2023-03-14

我使用以下代码尝试了以下正则表:

/([A-Za-z0-9'-\s])/g
[^#$@_&!*()]
and more of these variations

   var regex = new RegExp("([a-zA-Z0-9\s'-])+");
   console.log(regex.test(word));

现在,当我输入单词:“ABN##@@123-test”时,所有返回true。它应该是false,因为里面有字符##@@。

谢谢你的帮助。

共有1个答案

丰辰沛
2023-03-14

新RegExp(“([a-za-z0-9\s'-])+”)regex查找部分匹配项,即在较大的字符串中查找字母、数字、'-的条纹,一旦找到匹配项,将返回匹配项。注它找不到空白,因为字符串文本中的\s被解析为字母s,而不是\s空白模式。

所以,你需要做两件事:

  • 在模式的开头添加锚点^,在模式的结尾添加锚点$,以确保整个字符串匹配
  • 使用regex文字表示法/regex/,以确保\s被解析为空白模式。
var regex = /^[a-zA-Z0-9\s'-]+$/;
function test() {
  var str = document.getElementById("text").value;
  var regex = /^[a-zA-Z0-9\s'-]+$/;
  if (regex.test(str)) {
     console.log("Valid");
  }
  else {
     console.log("Not Valid");
  }
}
<input id="text" type="text" />
<button id="btn" onclick="test()">Test</button>
 类似资料: