Регулярное выражение с условными выражениями в Javascript error -> Недопустимое регулярное выражение - PullRequest
1 голос
/ 22 января 2020

Я работаю над регулярным выражением, которое проверяет шаблон от A01 до A99. Я пришел к этому решению:

^A(?(?=0)0[1-9]|[0-9][0-9])$

Затем, когда я пытаюсь внедрить его в JS, я получаю сообщение об ошибке

Uncaught SyntaxError: Invalid regular expression: /^A(?(?=0)0[1-9]|[0-9][0-9])$/: Invalid group
at new RegExp (<anonymous>)
at window.onload ((index):34)

Я попытался сделать:

new RegExp('^A(?(?=0)0[1-9]|[0-9][0-9])$');

Или

/^A(?(?=0)0[1-9]|[0-9][0-9])$/

Но я получаю одинаковую ошибку с обоими из них. Я знаю, что это из-за условной проверки внутри регулярного выражения. Есть ли способ, которым я могу реализовать этот шаблон внутри Js? Он работает над regex101: https://regex101.com/r/g0Qfac/1

Есть идеи?

Спасибо!

1 Ответ

2 голосов
/ 22 января 2020

JavaScript регулярное выражение не поддерживает условные конструкции .

Использование

^A(?:0[1-9]|[1-9][0-9])$

Или

^A(?:0[1-9]|[1-9]\d)$

Подробности

  • ^ - начало строки
  • A - буква A
  • (?:0[1-9]|[1-9]\d) - либо 0, за которой следует ди git от 1 до 9 или ди git от 1 до 9, за которым следует любой ди git
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...