Нужно регулярное выражение, которое гарантирует, что номер начинается с 01 02 или 08 и имеет длину 10 или 11 цифр - PullRequest
3 голосов
/ 09 декабря 2011

Мне сложно перечислить регулярное выражение, чтобы проверить, начинается ли число с 01, 02 или 08 и имеет длину десять или одиннадцать цифр.

Например, я хочу, чтобы числа, отформатированные следующим образом:

01614125745
02074125475
0845895412
08004569321

и нумерация других форм для сбоя, число как:

0798224141
441544122444
0925456754

и т. Д. В основном, любое число, которое не начинается с 01 02 или 08.

Ответы [ 2 ]

14 голосов
/ 09 декабря 2011

Следующий шаблон соответствует критериям:

/^(?=\d{10,11}$)(01|02|08)\d+/   # This pattern can easily be extended

/^(?=\d{10,11}$)0[128]\d{8,9}/   # Same effect

Объяснение:

^                Begin of string
(?=\d{10,11}$)   Followed by 10 or 11 digits, followed by the end of the string
(01|02|08)       01, 02 or 08
\d+              The remaining digits
8 голосов
/ 09 декабря 2011

Ответ Роба В. правильный.Но я бы использовал более простое выражение, подобное этому: (не нужно заглядывать вперед)

/^0[128][0-9]{8,9}$/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...