正则表达式电话号码验证

时间:2013-09-01 19:10:53

标签: javascript regex

我正在尝试验证遵循下一个模式的电话号码

01\d{9} 
2\d{7}

但是用户可以输入多个以空格或一个输入字段分隔的数字 所以我想出了正则表达式

/(?:(?:01\d{9}$)|(?:2\d{7}$) ){1,}
A Test Sample
"01226113130 26322612 24586154 01004598654"

My Expression与此示例不匹配,有什么帮助吗?

解决方案 对于其他人如果他们在问题上失败了,你可以试试Jerry Solution或者这个

(?:(?:(?:01\d{9}(?:[\- \,])*)|(?:2\d{7}[\- \,]*))){1,}

1 个答案:

答案 0 :(得分:2)

试试这个:

^(?:(?:01\d{9}|2\d{7}) ){1,}(?:01\d{9}|2\d{7})$

你当前的正则表达式为(?:01\d{9}$)|(?:2\d{7}$),其中$强迫它“过早地结束”比赛,所以删除这是第一件事。然后(?:01\d{9})|(?:2\d{7})可以重写为(?:01\d{9}|2\d{7})。我为字符串的开头添加了^

之后,此正则表达式只会验证以空格结尾的字符串,因此最后添加另一个(?:01\d{9}|2\d{7}),最后以$结束。

regex101 demo

哦,也好,最好将{1,}转换为*,如下所示:

^(?:(?:01\d{9}|2\d{7}) )*(?:01\d{9}|2\d{7})$