有没有办法让JSLint对这个正则表达式感到满意?

时间:2010-09-21 06:03:55

标签: javascript regex jslint

通过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抱怨?

1 个答案:

答案 0 :(得分:3)

这是一个角色类;你不需要分隔符(例如:逗号)。您可以通过将插入符号(^)和短划线(-)置于战略位置来清理正则表达式,这样就不需要对它们进行转义。

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

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

/\W/

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