Сбросить косую черту в 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). Не нужно бежать /
.
С другой стороны, я лично избегаю всего, когда сомневаюсь, просто чтобы сделать менее умных парсеров счастливыми.