JavaScript Regex не соответствует номеру мобильного телефона с международным кодом - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь проверить номер мобильного телефона 254777123456 по регулярному выражению /^((254|255)[0-9]+){9,15}$/, перед номером мобильного телефона должен стоять префикс указанных кодов стран, но общая длина номера мобильного телефона не должна превышать 15 символов, делая это с помощьюJavaScript становится нулевым, может кто-нибудь указать, что я делаю не так.

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

1 Ответ

0 голосов
/ 15 февраля 2019

Ваше регулярное выражение ^((254|255)[0-9]+){9,15}$ означает, что нужно выбрать не менее 4 цифр (из которых первые 3 должны быть либо 254 или 255), и все они должны встречаться не менее 9 раз, но не более 15 раз, что будет означатьминимальная длина строки, которая будет соответствовать, должна составлять 36 символов.Который, очевидно, вы не хотите.Ваше регулярное выражение нуждается в небольшой коррекции, когда вам нужно вынуть [0-9] часть и иметь {9,12} квантификатор отдельно.Правильное регулярное выражение, которое будет использоваться, должно быть таким:

^(?:(?:254|255)[0-9]{9,12})$

Это регулярное выражение будет соответствовать 254 или 255 отдельно и будет ограничивать оставшееся число, чтобы соответствовать от 9 до 12 (так как вы хотите, чтобы максимальное число совпадалодлиной 15, где 3 числа уже выделены)

Демо

var nums = ['254777123456','255777123456','255777123456123','2557771234561231']

for (n of nums) {
	console.log(n + " --> " + /^(?:(?:254|255)[0-9]{9,12})$/g.test(n));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...