Проверка правильности регулярных выражений js - PullRequest
0 голосов
/ 03 марта 2020

У меня есть регулярное выражение для проверки телефона, которое должно принимать "пробел" и "+"

, например, +212 0780526395

Это мое регулярное выражение: + [0-9] \ s * но это не работает

Ответы [ 3 ]

0 голосов
/ 03 марта 2020

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

(.*)1?-?\.?\(?\d{3}[\-\)\.\s]?\d{3}[\-\.\s]?\d(.*)

Тест на Рубуляр

0 голосов
/ 03 марта 2020

Ваше регулярное выражение, +[0-9]\s*:

  1. + Совпадения +.
  2. [0-9] Совпадения single di git.
  3. \s* Соответствует 0 или более пробельным символам (пробел, символ новой строки, табуляция и т. Д. c.)

Таким образом, ваше регулярное выражение соответствует '+8', '+8 ',' +8 ', то есть знак плюс, за которым следует один ди git, за которым следует любое количество пробелов.

Я предполагаю, что символ + действителен только тогда, когда он предшествует всем числам. Поэтому используйте:

^ *\+?((?: *\d){10}) *$
  1. ^ Соответствует началу строки.
  2. * Соответствует 0 или более пробелов.
  3. \+? Соответствует необязательный + символ.
  4. ((?: *\d){10}) Соответствует 10 вхождениям (см. ниже) из 0 или более пробелов, за которыми следует ди git в группе захвата 1.
  5. * Соответствует 0 или более пробелов.
  6. $ Соответствует концу строки.

Ключевое под-регулярное выражение в приведенном выше регулярном выражении - ((?: *\d){10}), которое требует, чтобы входные данные содержали в точности 10 цифр. Я просто выбрал номер 10 произвольно. Чтобы разрешить диапазон от 7 до 10 цифр, например, используйте ((?: *\d){7,10}). Или чтобы указать 1 или более цифр, используйте ((?: *\d)+).

Якоря ^ и $ необходимы для того, чтобы входные данные содержали только допустимый ввод.

См. Regex Demo

0 голосов
/ 03 марта 2020

Вы были близки, вам нужно пропустить +, если оно должно быть только в начале, и оставить пробел между числами:

\+[0-9\s]+

Лучшим подходом будет:

\+[0-9]+[0-9\s]*

Для принудительного ввода хотя бы одного числа после символа +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...