Сбросить косую черту в jscript regexp character class?

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

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

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

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

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

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

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

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

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

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

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

Ответы

Ответ 1

В стандарте четко сказано, что вы можете поместить что-либо неизолированное в класс символов, кроме \, ] и новой строки:

RegularExpressionClassChar ::
   RegularExpressionNonTerminator but not ] or \
   RegularExpressionBackslashSequence

RegularExpressionNonTerminator ::
    SourceCharacter but not LineTerminator

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

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