我的正则表达式不匹配



我使用下面的正则表达式来匹配一个或多个特殊字符来进行密码强度测试。

if (password.match(/W+/)) points++;

这似乎与下划线"_"作为特殊字符不匹配。为什么会这样,我该如何解决?

这是因为W[^w]相同,而w还包含a-z, A-Z, 0-9_

为了修复它,只需单独添加_字符:

if (password.match(/[W_]+/)) points++;

W(大写)表示not w,所以除了单词字符以外的任何字符。

Word字符(w)包括字母、数字和下划线。

也许你应该使用/[^a-z0-9]+/i来匹配非字母

您确定不需要w吗?Ww的否定。

w匹配(字母、数字和下划线),因此W不匹配字母、数字和下划线。详见:http://www.regular-expressions.info/reference.html

匹配失败,因为下划线被视为单词字符。W的MDN文档:

匹配任何非单词字符。相当于[^A-Za-z0-9_]

您可以通过将下划线和W分组来解决这个问题:

if (password.match(/[W_]+/)) points++;

像Javascript regex Tester这样的正则表达式工具对于调试这类事情特别有帮助。

相关内容

  • 没有找到相关文章

最新更新