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绕过问题。 不要禁止某些东西(可以绕过),只允许哪些字符是有效的。
考虑使用\W
而不是/^\w/
"!$7s-gd,&j5d-a#".replace(/\W/g, '');
对于你的具体情况,这是行不通的,因为你想留下逗号和短划线字符,但我认为这是值得一提的。