#javascript #regex
#javascript #регулярное выражение
Вопрос:
Я хочу протестировать формат строки. Эта строка должна начинаться со
знака, затем 2 цифры, затем .
знак, затем 10 цифр.
/^ d{2}.d{10}$/.test(' 34.2398320186');
Таким образом, это работает (вы можете его протестировать). Но когда я использую RegExp
, он говорит, что синтаксис имеет недопустимую ошибку квантификатора. Что не так?
Ответ №1:
Вы должны экранировать
с помощью второго \
new RegExp('^\ \d{2}\.\d{10}$'); // should work
Я добавлю рекомендацию от http://www.regular-expressions.info/javascript.html
Я рекомендую вам не использовать конструктор регулярных выражений с литеральной строкой, потому что в литеральных строках обратная косая черта должна быть экранирована.
Ответ №2:
Поскольку вы указываете регулярное выражение в виде строки, вам также необходимо экранировать », потому что это также escape-символ строки. Итак, вы хотели бы:
new RegExp('^\ \d{2}\.\d{10}$');
Ответ №3:
Вы можете попробовать это, если не хотите избегать обратной косой черты
var regex = /^ d{2}.d{10}$/
new RegExp(regex).test(' 34.2398320186');
Если вы хотите использовать string в качестве параметра для регулярного выражения, вам нужно экранировать обратную косую черту.
Комментарии:
1. Учитывая, что у вас уже есть регулярное выражение в строке 1, почему вы должны использовать «конструктор»?
2. @xanatos Я не уверен, что делает OP, я просто указал, что он отлично работает, когда вы используете этот конкретный конструктор.