JSLint "insecure ^" в регулярном выражении
JSLint сообщает небезопасное '^' для следующей строки. Почему это так? Или он просто будет жаловаться каждый раз, когда я захочу отрицать класс персонажей?
// remove all non alphanumeric, comma and dash characters
"!$7s-gd,&j5d-a#".replace(/[^w,-]/g, '');
3 ответа:
Это будет сделано только в том случае, если у вас есть опция, выбранная внизу:
Disallow insecure . and [^...] in /RegExp/
Из документов:
Верно, если . и [^...] не должно допускаться в литералах регулярного выражения. Эти формы не следует использовать при проверке в защищенных приложениях.
Итак, ответ на ваш вопрос, если вы начинаете регулярное выражение с
^
и оно проверено, да, оно будет выдавать ошибку каждый раз. Проблема в том, что с символами Юникода вы позволяете почти все, что там есть и существует вероятность возникновения проблем с безопасностью или проблем с проверкой в обход. Вместо того, чтобы запрещать что-то (что можно обойти), разрешить только те символы, которые допустимы.