jshint неэкранированные символы в регулярном выражении - PullRequest
3 голосов
/ 06 июня 2011

Я пытаюсь очистить Javascript-код с помощью jshint. В используемом стороннем скрипте jshint жалуется на неэкранированный javascript в этой строке:

var cleanString = deaccentedString.replace(/([|()[{.+*?^$\\])/g,"\\$1");

Я также хотел бы понять, что делает это регулярное выражение, но я этого не вижу. Может кто-нибудь сказать мне, для чего это нужно и как написать это очищенным способом?

Спасибо за любые подсказки.

Ответы [ 2 ]

5 голосов
/ 06 июня 2011

Соответствует любому из следующих символов: |()[{.+*?^$\ и заменяет его экранированным аналогом (обратный слеш плюс этот символ).

Хотя на многих диалектах регулярных выражений допустимо включать неэкранированный [ в класс символов, это может вызвать ошибку в других, поэтому попробуйте следующее:

var cleanString = deaccentedString.replace(/[|()\[{.+*?^$\\]/g,"\\$0");

(ненужноегруппа захвата тоже может быть отброшена.)

3 голосов
/ 06 июня 2011

Регулярное выражение выбирает «специальные» символы и добавляет обратную косую черту.Я предполагаю, что ему не нравится голое "[" в классе персонажей, но это всего лишь предположение.Вы можете попробовать:

var cleanString = deaccentedString.replace(/([|()\[{.+*?^$\\])/g,"\\$1");

Другой вариант - просто не беспокоиться о том, что говорит jshint;В конце концов, это всего лишь консультативный инструмент, и если код действительно работает должным образом во всех браузерах, ну, совет явно плохой: -)

...