特殊字符的Javascript匹配函数

特殊字符的Javascript匹配函数,javascript,regex,special-characters,match,Javascript,Regex,Special Characters,Match,我正在编写这段代码,并使用“匹配”功能来检测密码的强度。如何检测字符串中是否包含特殊字符 if(password.match(/[a-z]+/)) score++; if(password.match(/[A-Z]+/)) score++; if(password.match(/[0-9]+/)) score++; 只需执行上面的操作,但要为!@$%创建一个组^&*()等。只需确保转义在正则表达式中有意义的字符,如^和(等…) 编辑-- 这将匹配任何非字母数字或空格的内容。如果空格也应匹配,则

我正在编写这段代码,并使用“匹配”功能来检测密码的强度。如何检测字符串中是否包含特殊字符

if(password.match(/[a-z]+/)) score++;
if(password.match(/[A-Z]+/)) score++;
if(password.match(/[0-9]+/)) score++;

只需执行上面的操作,但要为
!@$%创建一个组^&*()
等。只需确保转义在正则表达式中有意义的字符,如
^
等…)

编辑--

这将匹配任何非字母数字或空格的内容。如果空格也应匹配,则只需使用
/[^\w]/
即可,如果您的意思是!@#$%和ë作为特殊字符,您可以使用:

/[^a-zA-Z ]+/
^
的意思是如果它不是a-z、a-z或空格

如果您仅指!@$&$等内容,请使用:

/\W+/

\w
匹配单词字符,
\w
不匹配单词字符。

您必须将它们单独列为白名单,如下所示:

if(password.match(/[`~!@#\$%\^&\*\(\)\-=_+\\\[\]{}/\?,\.\<\> ...
if(password.match(/[`~!@\$%\^&*\(\)\-=\uU+\\\[\]{}/\?,\.\。。。
等等。注意,您必须用
\
转义正则表达式控制字符


虽然不如
/[^A-Za-z0-9]+/
优雅,但这将避免国际化问题(例如,不会自动将远东语言字符(如汉语或日语)列入白名单)。

您始终可以否定字符类:

if(password.match(/[^a-z\d]+/i)) {
    // password contains characters that are *not*
    // a-z, A-Z or 0-9
}

但是,我建议使用一个现成的脚本。使用上面的代码,您只需键入一堆空格,就可以获得更好的分数。

从您的正则表达式中可以看出,除了字母数字之外,您将所有字符都称为特殊字符。如果是这种情况,只需这样做即可

if(password.match(/[\W]/)) {
    // Contains special character.
}
无论如何,你为什么不把这三个正则表达式合并成一个呢

if(password.match(/[\w]+/gi)) {
    // Do your stuff.
}

任何不是字母或数字的东西都是特殊字符匹配。
if(password.match(/[\w]+/gi)) {
    // Do your stuff.
}