js 正则表达式11位手机号 12位座机号 12位带有 横杠 手机号
在日常开发中,经常需要对用户输入的电话号码进行有效性验证,包括手机号和座机号。本文将通过正则表达式来详细讨论如何匹配11位手机号、12位座机号以及12位带有横杠的手机号。
匹配11位手机号
首先我们来讨论如何匹配11位手机号。在中国,手机号的格式一般为11位数字,以1开头。我们可以用如下正则表达式来匹配11位手机号:
const reg = /^1[0-9]{10}$/;
const phoneNumber = '13912345678';
if (reg.test(phoneNumber)) {
console.log('手机号格式正确');
} else {
console.log('手机号格式不正确');
}
运行结果:
手机号格式正确
上面的正则表达式/^1[0-9]{10}$/
表示以1开头,后面跟着10位数字。其中^
表示开头,$
表示结尾,[0-9]
表示数字0-9之间的任意一个,{10}
表示匹配前面的元素10次。
匹配12位座机号
接下来我们讨论如何匹配12位座机号。座机号的格式一般为3位区号+8位号码或4位区号+8位号码。我们可以用如下正则表达式来匹配12位座机号:
const reg = /^0\d{2,3}-\d{8}$/; // 3位区号
const landlineNumber = '0755-12345678';
if (reg.test(landlineNumber)) {
console.log('座机号格式正确');
} else {
console.log('座机号格式不正确');
}
运行结果:
座机号格式正确
上面的正则表达式/^0\d{2,3}-\d{8}$/
表示以0开头,接着是2或3位数字(区号),然后是横杠-
,最后是8位数字(号码)。
匹配12位带有横杠的手机号
有时候用户输入手机号时会在号码中加入横杠分隔,比如139-1234-5678
这种形式。我们也可以通过正则表达式来匹配这种格式的手机号:
const reg = /^1[0-9]{2}-[0-9]{4}-[0-9]{4}$/;
const phoneNumberWithDash = '139-1234-5678';
if (reg.test(phoneNumberWithDash)) {
console.log('带横杠的手机号格式正确');
} else {
console.log('带横杠的手机号格式不正确');
}
运行结果:
带横杠的手机号格式正确
上面的正则表达式/^1[0-9]{2}-[0-9]{4}-[0-9]{4}$/
表示以1开头,接着是2位数字,然后是横杠-
,再是4位数字,再是横杠-
,最后是4位数字。
通过本文的讨论,我们学习了如何使用正则表达式来匹配11位手机号、12位座机号以及12位带有横杠的手机号。在实际开发中,我们可以根据需求调整正则表达式来匹配不同格式的电话号码,从而有效验证用户的输入。