43

JSLint为以下行报告不安全的“^” 。这是为什么?或者它只是在我想否定角色类的任何时候抱怨?

// remove all non alphanumeric, comma and dash characters
"!$7s-gd,&j5d-a#".replace(/[^\w,\-]/g, '');
4

3 回答 3

38

仅当您在底部选择了选项时,它才会这样做:

Disallow insecure . and [^...] in /RegExp/

文档

真如果。并且 [^...] 不应该在 RegExp 文字中被允许。在安全应用程序中进行验证时,不应使用这些表单。

所以回答你的问题,如果你开始一个正则表达式^并检查它,是的,它每次都会抛出错误。问题在于 unicode 字符,您允许其中几乎所有内容,并且可能存在安全问题或验证绕过问题。与其禁止某些东西(可以绕过),不如只允许有效的字符。

于 2010-11-05T19:17:20.657 回答
6

regexp: true

在您的 lint 选项中,将允许

. and [^...] in /RegExp/

您可以在此处配置您想使用的规则

http://www.jslint.com/

于 2014-06-24T04:04:36.520 回答
0

考虑使用\W而不是/^\w/

"!$7s-gd,&j5d-a#".replace(/\W/g, '');

对于您的特定情况,这不起作用,因为您想保留逗号和破折号字符,但我认为值得一提。

于 2013-10-30T10:08:12.117 回答