由于手机号段的不断更新,以前的正则表达式已经无法满足需求。重新编写这条表达式,号段资料来源依据:http://www.jihaoba.com/tools/haoduan/

现有手机号段:
移动:139   138   137   136   135   134   147   150   151   152   157   158    159   178  182   183   184   187   188  
联通:130   131   132   155   156   185   186   145   176

电信:133   153   177   173   180   181   189

虚拟运营商:170  171

整理后:130~139  145,147 15[012356789] 178,176,177,173,170,171 180~189

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

}

js:var bool = checkRegexp(jq("#mobile"), /^0?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/, "电话格式不对");

表达式分析:
“/”代表一个正则表达式。
“^”代表字符串的开始位置,“$”代表字符串的结束位置。
“?”代表匹配前面的字符一个或零个,所以这里0?的意思是手机号码可以以0开头或不以0开头。
接下的部分验证11位的手机号码,先从13开始,因为从130-139都有所以可选区间是[0-9],15开头的号码没有154所以[]里面没有4这个数字,当然也可以写成[0-35-9],下面18和14开的号码同上。

小括号括起来的代表一个子表达式,里面是4个可选分支分别用“|”来区分开来,在正则中“|”的优先级是最低的,这里每个分支匹配的都是3个字符(一个[]只能匹配一个字符,里面是可选的意思),也就是手机号码的前3位数字,那么后面还有8位数字需要匹配,可以是0-9的任意字符,所以是“[0-9]{8}”,{}中的数字代表匹配前面字符的个数。

分析完毕。

如果有大头鬼在前面写上86,17951之类的呢? 

/^(0|86|17951)?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$/

C#版:using System.Text.RegularExpressions;

public static bool IsTelephone(string str_telephone)
        {
            return Regex.IsMatch(str_telephone, @"^(0|86|17951)?(13[0-9]|15[012356789]|17[013678]|18[0-9]|14[57])[0-9]{8}$");
        }

转载于:https://www.cnblogs.com/betterDay/p/6845113.html

正则表达式匹配手机号相关推荐

  1. JS正则表达式匹配手机号

    JS中常用正则表达式举例一 JS正则表达式匹配手机号 大家好,有关正则表达式的基本知识在其它文章中已做了介绍: JS属性&方法详解 下面一起来看看JS中利用正则表达式匹配字符串的常用例子: 手 ...

  2. Python学习:正则表达式匹配手机号,邮箱

    匹配手机号 import re phoneRegex = re.compile(r'''((\d{3}|\(\d{3}\))? # area code(\s|-|.)? # separator(\d{ ...

  3. 正则表达式匹配手机号、QQ号、邮箱

    import re #匹配邮箱 # def email_match(str1): # #12312313413@sdeqwe.com # res = re.findall(r"(\w{1,} ...

  4. 正则表达式匹配、手机号、QQ号、邮箱号

    正则表达式匹配.手机号.QQ号.邮箱号 第一个正则表达式匹配手机号 ```首先我们来创建一个变量接受用户输入的数据var son = number(prompt(""))然后再来一 ...

  5. JS常用的正则表达式(匹配邮箱、名字、手机号等等)

    JS常用的正则表达式(匹配邮箱.名字.手机号等等) /* 匹配英文或字符名字的正则表达式 */ var userNameReg = /^\w{6,30}$/; /* 匹配邮箱的正则表达式 */ var ...

  6. Android中利用正则表达式验证手机号是否合法

    利用正则表达式来验证手机号是否合法,现在我们简单使用一下,这个在实际的应用中很实用. 例:在输入框中输入手机号,判断是否合法, MainActivity中: package com.example.m ...

  7. 正则表达式实现手机号中间4位数隐藏或者只显示末尾四位数

    下面看下正则表达式实现手机号中间4位数隐藏或者只显示末尾四位数 ? 1 2 // 匹配手机号首尾,以类似"123****8901"的形式输出 '12345678901'.repla ...

  8. java判断手机号_java使用正则表达式判断手机号的方法示例

    本文实例讲述了java使用正则表达式判断手机号的方法.分享给大家供大家参考,具体如下: 要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经开放了 ...

  9. 使用正则表达式验证手机号格式

    废话不多说,直接上代码,有什么区段可以补充的,请告知! /** * 校验手机号格式 * * @param number * @return */ public static boolean isMob ...

最新文章

  1. js 判断js,css是否引入,确保不重复引入
  2. [TCP/IP] TCP如何保证可靠性
  3. Ajax基本案例详解之$.ajax的实现
  4. 热式气体质量流量计检定规程_热式气体质量流量计基于热扩散原理
  5. 【备忘录】c++ 整形浮点=字符串 类型转换
  6. 你还在犹豫要不要学习Java?不妨来看看我的见解如何?
  7. 构造函数与析构函数的重载及浅拷贝和深拷贝
  8. CBD将建智慧城市管理平台
  9. 数据库入门(SQL SEVER)之SQL语句删除单行数据,所有行数据,表和数据库
  10. c语言浪漫烟花表白,C语言实战之浪漫烟花表白程序.pdf
  11. VS2010闪退的问题
  12. 文献管理软件Zotero常用插件安装及配置使用
  13. 详谈PC端软件 - 加壳与脱壳
  14. 独家解读 | 基于优化的对抗攻击:CW攻击的原理详解与代码解读
  15. 【雅思】【写作】【大作文】Discuss both views and give your own opinion
  16. Appium + IOS 自动化环境搭建教程(实践+总结+踩坑)
  17. hazelcast的坑爹事
  18. 电机控制器培训资料-《如何快准狠的标定永磁同步电机》 品牌:车用电机控制器
  19. Qt编写安防视频监控系统1-通道切换
  20. mongodb 副本集测试

热门文章

  1. Timer和TimerTask类 例子 .
  2. 时尚的基因是创新 -- 旺旺平台产品线员工大会即兴发言提要
  3. GPU云服务器+tensorboard
  4. 只导出项目需要的pip依赖包-方法的缺陷
  5. fastdfs上传文件时报错No route to host
  6. Error: Another program is already listening on a port that one of our HTTP servers is configured to
  7. spark中累加器的使用(转)
  8. 07_QueueWithTwoStacks
  9. python查找文字在图片中的位置_图片中的文字竟然能如此快速提取?OCR文字识别功能简直太强大了...
  10. 工作单元php,PHP面向对象中的工作单元是什么