正则表达式-如何使用正则匹配合法的电话与手机号码?

正则表达式-如何使用正则匹配合法的电话与手机号码?

想挽留 发布于 2017-04-22 字数 327 浏览 835 回复 3

如题

合法电话

010-66666666
010-6666 6666
010 6666 6666
1066666666
66666666
+8601066666666
86-010-66666666

合法手机
13100000000
131 0000 0000
1310 0000 000
18600000000

不合法的手机
1310000000 (长度错误)
11100000000 (号段错误)

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑾兮 2017-07-29 3 楼

//校验普通电话、传真号码:可以“+”开头,除数字外,可含有“-”
function isTel(tel)
{
//国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)"
var pattern =/^(([0+]d{2,3}-)?(0d{2,3})-)(d{7,8})(-(d{3,}))?$/;
//var pattern =/(^[0-9]{3,4}-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^([0-9]{3,4})[0-9]{3,8}$)|(^0{0,1}13[0-9]{9}$)/;
if(tel!="")
{
if(pattern.exec(tel))
{
return true;
}
}
return false;
}

手机号验证正则:

var regex = {
mobile: /^0?(13[0-9]|15[012356789]|18[0236789]|14[57])[0-9]{8}$/
}

想挽留 2017-07-15 2 楼

手机检测的正则表达式:
^1(34|35|36|37|38|39|47|50|51|52|57| 58|59|82|87|88|30|31|32|55|56|85|86|33|53|80|89)d{8}$
解释:
中国三大运营商27种区段。
1.移动16种:134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188。
2.联通7种:130、131、132、155、156、185、186
3.电信4种:133、153、180、189
肯定以1开头,然后2位,之后8位,一共11位。
{8}匹配8位。如果是用php。可以写为:
$regex='^1(34|35|36|37|38|39|47|50|51|52|57| 58|59|82|87|88|30|31|32|55|56|85|86|33|53|80|89)d{8}/x';
最后面的x保证忽略空白。
电话的匹配太复杂,你要穷举所有地方的区号。而且不同地方区号后的号码数位不同。
有的7位,有的8位。

归属感 2017-06-20 1 楼

只提供正则的规则,因为我是用preg_match的:
判定如13122222222,这样号码是否合法:/^[1-9]{1}[3,5,8]{1}[0-9]{9}$/
如果需要加上区号,只需在正则中加入‘|’添加[1-9]{3,4}加上上面的规则即可,因为大陆区号都是3~4位数的。如需添加86以此类推即可