正则表达式中的JSLint"不安全^"

Tho*_*s R 43 javascript regex jslint regex-negation

JSLint报告以下行的不安全的"^".这是为什么?或者只是在我想要否定一个角色类时抱怨?

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

Nic*_*ver 38

如果您在底部选择了选项,它只会执行此操作:

Disallow insecure . and [^...] in /RegExp/
Run Code Online (Sandbox Code Playgroud)

来自文档:

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

所以回答你的问题,如果你开始使用正则表达式^并进行检查,是的,它每次都会抛出错误.问题在于unicode字符,你几乎可以在那里使用任何东西,并且有可能出现安全问题或验证绕过问题.不要禁止某些东西(可以绕过),只允许使用哪些字符有效.

  • 抱怨JSLint的严格过度是世界各地精湛专业人士的消遣. (18认同)
  • @Tom JSLint并不关心*你正在做什么它只是提供建议和最佳实践,以防止新手JavaScripter犯下愚蠢的错误.如果你可以通过各种方式证明你正在做的事情,那就去做吧,但不要抱怨JSList不喜欢它. (15认同)
  • 你不想知道关于jslint的真相....因为你无法处理真相! (4认同)
  • Blergh,JSLint是不是很聪明,看到我正在替换所有东西*但是*那些东西?string.match(/ [\ w,\ - ]/g,'').join('')然后是. (3认同)

Dav*_*row 6

regexp: true

在您的lint选项中,将允许

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

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

http://www.jslint.com/