Избежать косой черты в классе символов jscript regexp? - PullRequest
7 голосов
/ 10 февраля 2012

У меня есть регулярное выражение для проверки чисел (0-9) и / или косой черты (/).Это выглядит так:

/^[0-9/]+$/i.test(value)

Теперь я считаю, что это правильно, но валидатор javascript eclipse не согласен:

Синтаксическая ошибка на токене "]", удалите этот токен

Я полагаю, это потому, что разделитель / разделитель равен /, и затмение "думает", что регулярное выражение завершено (и поэтому ] будет неожиданным).

Мы можем удовлетворить затмение, экранируя / следующим образом:

/^[0-9\/]+$/i.test(value)

Обратите внимание, что обе версии работают для меня.

Моя проблема с этим:

  • Насколько я знаю, не нужно экранировать косую черту конкретно в этом диапазоне.Это может зависеть от конкретной ситуации (например, для javascript это используемый разделитель).
  • Хотя они оба работают, я бы предпочел использовать «правильную» версию из-за поведения в разных средах, и, ну .. потому что правильно и все:)

Кто-нибудь знает, что я должен делать? Побег или нет? Я не нашел ни одного авторитетного сайта, который говорил бы мне избегать / в диапазоне, но Eclipse-валидатор, вероятно, не совсем глупый ...

1 Ответ

9 голосов
/ 10 февраля 2012

Стандарт четко гласит, что в класс символов можно поместить все, что не экранировано, кроме \, ] и символа новой строки:

RegularExpressionClassChar ::
   RegularExpressionNonTerminator but not ] or \
   RegularExpressionBackslashSequence

RegularExpressionNonTerminator ::
    SourceCharacter but not LineTerminator

(http://es5.github.com/#x7.8.5). Не нужно убегать /.

С другой стороны, я лично избегал бы всего, если сомневался, только чтобы осчастливить менее умных парсеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...