基于状态前缀验证电话号码的复杂正则表达式

时间:2014-08-29 14:22:36

标签: javascript regex validation

我正在编写或至少尝试使用正则表达式来验证Javascript中的委内瑞拉电话号码。我做了一个基本的表达:/^0[0-9]{10}$/允许数字,例如:

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

但是第2和第3个无效,因为前缀值213214无效。我有一个有效前缀列表(取自维基百科),这是一个:

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 :(得分:3)

您的正则表达式将包含所有这些前缀,但您可以在此交替模式上构建一些内容:

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

答案 1 :(得分:1)

在@ anubhava的答案的基础上,你将为每个人建立它。整体正则表达式看起来像这样..

^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

答案 2 :(得分: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