当通过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报错?
发布于 2010-09-21 06:06:30
这是一个字符类;你不需要分隔符(例如:逗号)。您可以通过将插入符号(^
)和破折号(-
)放在适当的位置来清理正则表达式,这样它们就不需要转义了。
/[!@#$%^&*?_~()-]/
应该行得通。您还可以使用非单词字符类:
/\W/
匹配不是字母(a-zA-Z
)、数字(0-9
)或下划线(_
)的任何内容。
https://stackoverflow.com/questions/3757697
复制