2014-08-29 2 views
1

Я пишу или, по крайней мере, пытаюсь использовать регулярное выражение для проверки телефонных номеров Венесуэлы в Javascript. Я сделал основное выражение: /^0[0-9]{10}$/ которые позволяют номера, как, например:Сложное регулярное выражение для подтверждения номера телефона на основе префикса состояния

02129876543 (VALID) 
02139876543 (INVALID) 
02149876543 (INVALID) 

Но второй и 3-й не действует, так как префикс значения 213 и 214 не действительны. У меня есть список допустимых префиксов (взято из Википедии), и это одна:

248, 281, 282, 283, 235, 247, 278, 243, 244, 245, 246, 273, 278, 235, 285, 286, 288, 
241, 242, 243, 245, 249, 258, 287, 212, 259, 268, 269, 237, 235, 238, 246, 247, 251, 
252, 253, 271, 273, 274, 275, 212, 234, 239, 287, 291, 292, 295, 255, 256, 257, 293, 
294, 276, 277, 271, 272, 212, 251, 253, 254, 261, 262, 263, 264, 265, 266, 267, 271, 
275, 260, 270, 412, 414, 424, 416, 426 

Как я могу построить регулярное выражение для проверки достоверности этих префиксов? Действительное число должно начинаться всегда с нулевым (0), за которым следует любой из префиксов выше, а затем семь цифр, может ли кто-нибудь помочь?

ответ

3

Вашего регулярное выражение будет длинный, чтобы включить все эти префиксы, но вы можете создать что-то по этому чередованию схемы:

/^0(?:212|24[123589]|252|294)[0-9]{7}$/ 
+0

Так что, если я получаю, я должен добавить любой префикс регулярного выражения? Правильно? – ReynierPM

+1

Да, это правильно. См. Обновленное регулярное выражение, которое уменьшает длину. – anubhava

+0

, в то время как ответ правильный, похоже, что вы забыли некоторые префиксы, такие как '281',' 271', '426' ... это нормально? – pomeh

1

Строительство на @ анубхав отвечает, вы бы построить его для каждого из них. В целом регулярное выражение будет выглядеть следующим образом ..

^0(?:2(?:12|3[45789]|[45][1-9]|6[0-9]|7[0-8]|8[1235678]|9[1-5])|4(?:1[246]|2[46]))\d{7}$ 

Live Demo

1

И полное регулярное выражение будет,

^0(?:2(?:12|4[1-9]|5[1-9]|6[0-9]|7[0-8]|8[1-35-8]|9[1-5]|3[45789])|4(?:1[246]|2[46]))\d{7}$ 

DEMO

+0

Я оставлю upvote, но '4 [0-9]' должен быть '4 [1-9]' – hwnd

+0

Спасибо, обновлено ... –

Смежные вопросы