Я пытаюсь использовать регулярные выражения в JavaScript, чтобы проверить, является ли значение ввода текста формы французским номером мобильного телефона.
французские номера мобильных телефонов начинаются с
06
или07
и следуют 8 цифр, как это:0611223344
или0744332211
. Международная форма этих чисел начинается с+33
, которая заменяет первые0
, например:+33611223344
или+33744332211
.
Я использую этот RegEx: (\+\b33|\b0)[67][0-9]{8}\b
, который проверяет, начинается ли вход с +336/7 или 06/7 и за ним следуют 8 цифр.
Я добавил Word Boundary (\b
), поэтому числа, подобные 06112233440611223344 (две конкатенированные правильные формы), не совпадают.
Это RegEx работает отлично thoses случаях:
0611223344 // matches
0744332211 // matches
+33611223344 // matches
+33744332211 // matches
06112233440744332211 // doesn't match
Но я до сих пор возникают проблемы с этими входами:
+33611223344+33611223344
0611223344 0744332211
0744332211+33611223344
0744332211 +33611223344
Они весь матч ...
Я пытался добавить ^
и $
всеми возможными способами для моего RegEx, но всякий раз, когда я добавляю один из этих символов, RegEx больше не работает.
Спасибо за вашу демонстрацию. Оказалось, что сайт, на котором я тестировал свой RegEx (regexr.com), не рассматривает новые строки как разделенные входы ... – Seeven
ERRATUM: regexr.com рассматривает новые строки до тех пор, пока вы устанавливаете теги '//gm' (а не только '//g', как и по умолчанию). (Я все еще думаю, что regex101 лучше). – Seeven
@SeevenByakko/m us multiline.you нужно установить его даже на regex101.com, если вы хотите протестировать его по нескольким строкам. \ G ifs для глобального соответствия. Так что он возвращает все match.flags, должен быть установлен каждый раз. – vks