Условное регулярное выражение javascript - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать регулярное выражение, которое может соответствовать номеру телефона, и поэтому скажите мне, является ли номер телефона действительным или нет.

Я хотел бы проверить, есть ли идентификатор страны передномер телефона, этот хорошо отформатирован.

Например: + (33) 0123456789 Я хочу быть уверен, что если пользователь начнет вводить первую скобку, за ним должны следовать номер изавершается закрывающей скобкой.

Мне удалось с механизмом PCRE

^[+]?((\()?(?(2)[0-9]{1,4})(?(2)\)))?([0-9]{2}){1}([\.\- ]?[0-9]{2}){4}$

Но я понял, что этот способ не работает с механизмом javascript, условные выражения не поддерживаются.

^[+]?((\()?((?=\2)[0-9]{1,4})((?=\2)\)))?([0-9]{2}){1}([\.\- ]?[0-9]{2}){4}$

Это не удовлетворяет мои потребности.Я хочу проверить, установлена ​​ли первая скобка, за ней должны следовать число и закрывающая скобка.

Поэтому я спрашиваю вас, есть ли обходной путь в javascript для этого?

Была бы очень признательна за помощь, спасибо:)

1 Ответ

0 голосов
/ 12 декабря 2018

Часть ((\()?(?(2)[0-9]{1,4})(?(2)\)))? регулярного выражения соответствует необязательной последовательности меньших шаблонов.(\()? соответствует необязательному ( и помещает его в группу 2. Затем, (?(2)[0-9]{1,4}) соответствует 1-4 цифрам, если группа 2 соответствует.Тогда (?(2)\)) соответствует ), если группа 2 соответствует.По сути, это равно (?:\([0-9]{1,4})\))?.

Таким образом, здесь вам не нужно никакой условной конструкции.

Вы можете использовать

^\+?(?:\([0-9]{1,4})\)?[0-9]{2}(?:[. -]?[0-9]{2}){4}$

См. Демонстрационную версию regex

Подробности

  • ^ - начало строки
  • \+? - необязательно +
  • (?:\([0-9]{1,4})\)? - необязательная последовательность: (, от 1 до 4 цифр и )
  • [0-9]{2} - 2 цифры
  • (?:[. -]?[0-9]{2}){4} - 4 вхождения необязательного пробела, точка или -, за которыми следуют 2 цифры
  • $ - конец строки.
...