Javascript 用于字母数字和'的正则表达式;

Javascript 用于字母数字和'的正则表达式;,javascript,jquery,regex,Javascript,Jquery,Regex,我一直在尝试不同的正则表达式,但似乎找不到正确的正则表达式 我需要一个正则表达式,它允许用户在文本中键入字母、数字、空格和 所以字符串如下: “奥奇夫罗格” “明晚” “ISBN1234ABC” 应该是真的 我用以下代码尝试了以下正则表达式: /([A-Za-z0-9'-\s])/g [^#$@_&!*()] and more of these variations var regex = new RegExp("([a-zA-Z0-9\s'-])+"); console.

我一直在尝试不同的正则表达式,但似乎找不到正确的正则表达式

我需要一个正则表达式,它允许用户在文本中键入字母、数字、空格和

所以字符串如下: “奥奇夫罗格” “明晚” “ISBN1234ABC”

应该是真的

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

/([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,因为其中包含字符##@@

感谢您的帮助。

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

因此,您需要做两件事:

  • 在模式的开头添加锚定点,
    ^
    ,在模式的结尾添加锚定点,
    $
    ,以确保整个字符串匹配
  • 使用正则表达式文字符号,
    /regex/
    ,以确保将
    \s
    解析为空白模式
注意:您不需要在捕获组中包装整个模式,您始终可以访问整个正则表达式匹配值(即使在替换时,使用
$&
反向引用)。因此,您可以删除模式周围的

因此,您的解决方案是

var regex = /^[a-zA-Z0-9\s'-]+$/;
JS演示:

功能测试(){
var str=document.getElementById(“text”).value;
var regex=/^[a-zA-Z0-9\s'-]+$/;
if(正则表达式测试(str)){
控制台日志(“有效”);
}
否则{
控制台日志(“无效”);
}
}


测试
Use
var regex=/^[a-zA-Z0-9\s'-]+$/-添加锚并使用正则表达式文字。是的,我已经测试了@WiktorStribiż新的解决方案,效果很好:)Wiktor,你是我的英雄;)有时很难看出正则表达式中的错误。请把你的答案贴出来,这样我就可以接受了。我写下了所有的解释。真的是Wiktor每个人的英雄:)我还需要问你一件事。。我怎么能接受带有ïïïïïïïï之类东西的角色?对于Chloë.Use等名称/单词,您将能够使用与任何Unicode字母匹配的
\pL
。否则,请为接受的字母构建Unicode代码点范围,请参阅。遗憾的是,当前本机regex JS实现不支持Unicode属性类。另外,请参见,或者最好导入XRegExp。如果您只匹配了一些欧洲字母,请参见,在模式中添加
À-ÿ
。由于该范围包括相互应用符号和除法符号,您可以添加
À-Ø-ÿ-ÿ
,而不是
À-ÿ
@elvila。此要求超出当前问题的范围。这里还有很多其他线程讨论如何在JS中将Unicode字符与正则表达式匹配。