手机号正则表达式
在开发 Web 应用或手机应用时,我们不可避免地需要校验用户输入的手机号是否符合格式要求,由于手机号的格式有国内和国际两种,本文重点讨论国内手机号的正则表达式。
国内手机号码的格式
国内手机号码的格式是以数字1开头,后面是10位数字,总共有11位数字,例如:13800138000。
正则表达式
验证手机号的正则表达式:/^1[3456789]\d{9}$/
代码示例(JavaScript 语言):
const phoneReg = /^1[3456789]\d{9}$/;
const phoneNumber1 = '13800138000';
const phoneNumber2 = '138001380001';
console.log(phoneReg.test(phoneNumber1)); // true
console.log(phoneReg.test(phoneNumber2)); // false
在这个正则表达式中使用了包含在斜杠(/)中的两个特殊字符,它们分别是:^(起始位置标志)和(结束位置标志)。
^ 表示限制字符串的起始位置,同时表示必须以 1 开头,[3456789] 表示第二位必须是 3、4、5、6、7、8 或者 9 中的一个,\d 表示匹配 0-9 的任意数字,{9} 表示后续匹配数字的长度必须是 9 位, 表示限制字符串的结束位置,即必须是 11 位数字。
常见写法
除了上述表达式之外,我们还可以使用如下常见写法:
^(13[0-9]|14[579]|15[0-35-9]|166|17[01345678]|18[0-9]|19[89])\d{8}$
:该表达式可以检查所有可用的手机号码,包括卫星电话,但会误判虚拟运营商的电话号码。^(13[0-9]|14[5-7]|15[0-35-9]|166|17[0-8]|18[0-9]|19[89])\d{8}$
:该表达式与第一种写法最大的不同是不包括 14 钩沉、17 无头和 1977 的虚拟运营商手机号码。^1[3456789]\d{9}$
:该表达式同时包含上述两种表达式的要点,也是当前最常用的手机号码正则表达式。
应用场景
该正则表达式在前端开发、后端开发及各种应用场景中都有广泛应用,如在电商平台中校验用户绑定手机号,或在消息推送系统中根据手机号筛选推送对象等。
结论
国内手机号码正则表达式的应用经常会涉及到 11 位数字的校验,本文提供一些常用表达式供大家参考,其中以 /^1[3456789]\d{9}$/
表示法最为常用,具体使用时,可根据实际情况进行选择。