JSLint “insecure ^” in regular expression

后端 未结 3 1292
后悔当初
后悔当初 2020-11-29 09:55

JSLint reports Insecure \'^\' for the following line. Why is that? Or is it just going to complain any time I want to negate a character class?

// r         


        
相关标签:
3条回答
  • 2020-11-29 10:24

    regexp: true

    in your lint options, will allow

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

    you can configure the rules you would like to use here

    http://www.jslint.com/

    0 讨论(0)
  • 2020-11-29 10:27

    It only will do this if you have the option selected at the bottom:

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

    From the docs:

    true if . and [^...] should not be allowed in RegExp literals. These forms should not be used when validating in secure applications.

    So the answer your question, if you start a regex with ^ and it's checked, yes it'll throw the error every time. The issue is with unicode characters, you're allowing pretty much anything in there and there's potential for security issues, or validation bypassing issues. Instead of disallowing something (which can be bypassed), allow only what characters are valid.

    0 讨论(0)
  • 2020-11-29 10:41

    Consider using \W instead of /^\w/

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

    For your particular case this would not work because you want to leave comma and dash characters, but I think it is worth mentioning.

    0 讨论(0)
提交回复
热议问题