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, '');
对于您的特定情况,这不起作用,因为您想保留逗号和破折号字符,但我认为值得一提。