js 正则表达式验证手机号码

在日常开发中,经常需要验证用户输入的手机号码是否符合要求。而使用正则表达式是一种高效且方便的方法。本文将介绍如何使用JavaScript中的正则表达式来验证手机号码。
手机号码的格式
在中国,手机号码通常是11位数字,以1开头,接下来的10位数字可以是3、4、5、7、8中的任意一位数字。因此,一个符合规范的中国手机号码的格式为:1XXXXXXXXXX。
使用正则表达式验证手机号码
下面我们将使用JavaScript中的正则表达式来验证手机号码:
function validatePhoneNumber(phoneNumber) {
const regExp = /^1[34578]\d{9}$/;
if (regExp.test(phoneNumber)) {
return true;
} else {
return false;
}
}
// 测试
console.log(validatePhoneNumber('18812345678')); // true
console.log(validatePhoneNumber('12345678901')); // false
console.log(validatePhoneNumber('1356781234')); // false
console.log(validatePhoneNumber('188123456781')); // false
在上面的代码中,我们定义了一个名为validatePhoneNumber的函数,它接受一个参数phoneNumber,并使用正则表达式/^1[34578]\d{9}$/对手机号码进行验证。其中:
/^1[34578]\d{9}$/是一个正则表达式,表示手机号以1开头,接下来是3、4、5、7、8中的任意一位数字,最后是9位数字。-
regExp.test(phoneNumber)会检查phoneNumber是否符合正则表达式的规则,如果符合则返回true,否则返回false。 -
我们在测试代码中分别对符合规范、不符合规范的手机号码进行验证,可以看到最终的验证结果符合预期。
其他格式的手机号码验证
有时候,我们可能会遇到一些特殊格式的手机号码,比如带有区号或者国际区号的手机号码。下面我们来优化一下validatePhoneNumber函数,支持更多格式的手机号码验证:
function validatePhoneNumber(phoneNumber) {
const regExp = /^(\+?0?86-?)?1[34578]\d{9}$/;
if (regExp.test(phoneNumber)) {
return true;
} else {
return false;
}
}
// 测试
console.log(validatePhoneNumber('18812345678')); // true
console.log(validatePhoneNumber('12345678901')); // false
console.log(validatePhoneNumber('1356781234')); // false
console.log(validatePhoneNumber('188123456781')); // false
console.log(validatePhoneNumber('+86-18812345678')); // true
console.log(validatePhoneNumber('08618812345678')); // true
在代码中,我们对正则表达式进行了修改,新增了(\+?0?86-?)?来匹配可能存在的区号或国际区号。最终我们再次进行了多种格式的手机号验证测试,结果均符合预期。
总结
本文介绍了如何使用JavaScript中的正则表达式来验证手机号码。我们首先讨论了中国手机号码的一般格式,然后编写了一个简单的验证函数,并进行了测试。最后,我们对validatePhoneNumber函数进行了优化,支持更多格式的手机号码验证。
极客笔记