📅  最后修改于: 2023-12-03 15:32:23.935000             🧑  作者: Mango
电话号码的格式各国不尽相同,因此我们需要根据实际情况制定相应的正则表达式进行验证。 在本篇文章中,我们将介绍如何使用JS正则表达式来验证电话号码。
在中国大陆地区,手机号码由11位数字组成,开头是1,第二位可以是3456789中的任意一个数字。因此,我们可以使用正则表达式 /^1[3456789]\d{9}$/
来验证手机号码。
代码实现:
let phone = '13812345678';
let regex = /^1[3456789]\d{9}$/;
let result = regex.test(phone);
console.log(result); // 输出 true
解释:
/^1
:以数字1开头。[3456789]
:第二个数字可以是3456789中的任意一个。\d
:表示任意一个数字。{9}
:表示前面的数字出现9次。$
:表示字符串的结尾。中国大陆的固定电话号码由区号和电话号码组成。区号3或4位数字,电话号码7或8位数字。其间可能包含左右括号、空格、连字符等字符。因此,我们可以使用正则表达式 /^(\d{3,4}-?)?\d{7,8}$/
来验证固定电话号码。
代码实现:
let phone = '0755-1234567';
let regex = /^(\d{3,4}-?)?\d{7,8}$/;
let result = regex.test(phone);
console.log(result); // 输出 true
解释:
(\d{3,4}-?)?
:表示区号部分;\d{3,4}
表示3位或4位数字,-?
表示可能包含一个连字符。\d{7,8}
:表示电话号码,7或8位数字即可。香港的手机号码由8位数字组成,开头通常是5或6。因此,我们可以使用正则表达式 /^[56]\d{7}$/
来验证香港的手机号码。
代码实现:
let phone = '51234567';
let regex = /^[56]\d{7}$/;
let result = regex.test(phone);
console.log(result); // 输出 true
解释:
^[56]
:以5或6开头。\d{7}
:表示后面跟着7位数字。台湾的手机号码由10位数字组成,前3位为国际拨号码+886,第4到6位为手机网路代码,第7到10位为个人号码。因此,我们可以使用正则表达式 /^(\+?886-?|0)?9\d{8}$/
来验证台湾的手机号码。
代码实现:
let phone = '0987123456';
let regex = /^(\+?886-?|0)?9\d{8}$/;
let result = regex.test(phone);
console.log(result); // 输出 true
解释:
(\+?886-?|0)?
:国际拨号码,默认是+886,也可以是0,其中+可以省略,可以有一个连字符。9\d{8}
:表示第4到10位均为数字。通过本文,我们学习了如何使用JS正则表达式来验证电话号码。在此基础上,我们还可以进一步扩展正则表达式,验证其他国家或地区的电话号码。
完整代码示例:
// 验证中国大陆手机号码
let phone1 = '13812345678';
let regex1 = /^1[3456789]\d{9}$/;
let result1 = regex1.test(phone1);
console.log(`验证中国大陆手机号码:${result1}`); // 输出 true
// 验证中国大陆固定电话号码
let phone2 = '0755-1234567';
let regex2 = /^(\d{3,4}-?)?\d{7,8}$/;
let result2 = regex2.test(phone2);
console.log(`验证中国大陆固定电话号码:${result2}`); // 输出 true
// 验证香港手机号码
let phone3 = '51234567';
let regex3 = /^[56]\d{7}$/;
let result3 = regex3.test(phone3);
console.log(`验证香港手机号码:${result3}`); // 输出 true
// 验证台湾手机号码
let phone4 = '0987123456';
let regex4 = /^(\+?886-?|0)?9\d{8}$/;
let result4 = regex4.test(phone4);
console.log(`验证台湾手机号码:${result4}`); // 输出 true