3

通过 JSLint 运行我的 JavaScript 时,我从同一行代码中得到以下两个错误。

Problem at line 398 character 29: Insecure '.'.

if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/))

Problem at line 398 character 41: Unescaped '^'.

if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/))

我知道 JSLint 可能“过于谨慎”。我阅读了关于类似问题的评论,JSLint 的目的“禁止在正则表达式中不安全”选项

尽管如此,我希望拥有世界上最好的,并拥有一个不会导致 JSLint 抱怨的有效正则表达式。

但我在正则表达式上失败了。

是否可以制作正则表达式来查找至少一个特殊字符的存在,但不会导致 JSLint 抱怨?

4

1 回答 1

3

那是一个字符类;您不需要分隔符(例如:逗号)。^您可以通过将插入符号 ( ) 和破折号 ( ) 放在战略位置来清理正则表达式,-这样它们就不需要被转义。

/[!@#$%^&*?_~()-]/

应该管用。您还可以使用非单词字符类:

/\W/

匹配任何不是字母 ( a-zA-Z)、数字 ( 0-9) 或下划线 ( _) 的内容。

于 2010-09-21T06:06:30.380 回答