JSLint 报告以下行的不安全“^”。这是为什么?或者它会在我想否定一个角色类的任何时候抱怨吗?
// remove all non alphanumeric, comma and dash characters
"!$7s-gd,&j5d-a#".replace(/[^\w,\-]/g, '');
JSLint 报告以下行的不安全“^”。这是为什么?或者它会在我想否定一个角色类的任何时候抱怨吗?
// remove all non alphanumeric, comma and dash characters
"!$7s-gd,&j5d-a#".replace(/[^\w,\-]/g, '');
如果您在底部选择了选项,它只会执行此操作:
Disallow insecure . and [^...] in /RegExp/
从文档:
真如果。和 [^...] 不应该出现在 RegExp 文字中。在安全应用程序中进行验证时,不应使用这些表单。
所以回答你的问题,如果你开始一个正则表达式^
并检查它,是的,它每次都会抛出错误。问题在于 unicode 字符,您几乎可以在其中使用任何内容,并且可能会出现安全问题或绕过验证的问题。而不是禁止某些东西(可以绕过),只允许哪些字符是有效的。
考虑使用\W
代替/^\w/
"!$7s-gd,&j5d-a#".replace(/\W/g, '');
对于您的特定情况,这不起作用,因为您想留下逗号和破折号字符,但我认为值得一提。