JSLint正则expression式中的“insecure ^”

JSLint报告不安全'^'为下面的行。 这是为什么? 还是只是想抱怨任何时候我想否定一个字符类?

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

只有在底部select了选项时才会这样做:

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

从文档 :

如果。 和[^ …]不应该被允许在RegExp文字。 在安全应用程序中进行validation时,不应使用这些表单。

所以,你的问题的答案是,如果你用^开始一个正则expression式并且被检查,是的,它会每次都抛出错误。 问题在于unicode字符,你几乎可以允许任何内容,存在潜在的安全问题或validation绕过问题。 不要禁止某些东西(可以绕过),只允许哪些字符是有效的。

regexp: true

在你的棉绒选项,将允许

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

你可以在这里configuration你想使用的规则

http://www.jslint.com/

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

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

对于你的具体情况,这是行不通的,因为你想留下逗号和短划线字符,但我认为这是值得一提的。