繁体   English   中英

正则表达式不允许某些特殊字符

[英]Regex not allowing certain special characters

我有以下正则表达式,不允许某些特殊字符:

if (testString.match(/[`~,.<>;':"\/\[\]\|{}()-=_+]/)){    
    alert("password not valid");
}
else
{
    alert("password valid");
}

这很有效。 如果该正则表达式不包含括号内的任何特殊字符(~,.<>;':"\\/\\[\\]\\|{}()-=_+)则会接受该密码。

我的问题是它也不允许我输入奇怪的数字。

我错过了什么? 提前致谢!

这是一个示例:

的jsfiddle

你有一个字符范围:) )-=包括之间的所有ASCII字符)= (包括数字)。 移动-到类的末尾或转义它:

/[`~,.<>;':"\/\[\]\|{}()=_+-]/

此外,您不需要转义所有这些字符:

/[`~,.<>;':"/[\]|{}()=_+-]/

请注意,在您的情况下,使用test而不是match可能就足够了:

if (/[`~,.<>;':"/[\]|{}()=_+-]/.test(testString))){
    ...

test返回一个布尔值(这是你所需要的),而match返回一个包含所有捕获组的数组(无论如何你都要丢弃)。

请注意,正如Daren Thomas在评论中指出的那样,您应该决定要允许哪些字符。 因为当前的方法不会处理各种奇怪的Unicode字符,而是抱怨像_这样的一些相当标准的字符。 要创建白名单,您可以简单地反转字符类和条件:

if (!/[^a-zA-Z0-9]/.test(testString)) {
   ...

并包括您想要允许的所有字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM