通过JSLint运行我的JavaScript时,我从同一行代码中得到以下两个错误。
Problem at line 398 character 29: Insecure '.'.
if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/))
Problem at line 398 character 41: Unescaped '^'.
if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/))
据我所知,JSLint可能“过于谨慎”。我阅读了关于类似问题的评论,Purpose of JSLint "disallow insecure in regex" option。
尽管如此,我希望拥有所有世界中最好的,并且有一个正常的表达式,也不会导致JSLint抱怨。
但我在正则表达式上失败了。
是否可以创建查找至少一个特殊字符的正则表达式,但不会导致JSLint抱怨?
答案 0 :(得分:3)
这是一个角色类;你不需要分隔符(例如:逗号)。您可以通过将插入符号(^
)和短划线(-
)置于战略位置来清理正则表达式,这样就不需要对它们进行转义。
/[!@#$%^&*?_~()-]/
应该有效。您还可以使用非单词字符类:
/\W/
匹配任何不是字母(a-zA-Z
),数字(0-9
)或下划线(_
)。