📜  js 正则表达式验证电话号码 - Javascript (1)

📅  最后修改于: 2023-12-03 15:32:23.935000             🧑  作者: Mango

JS 正则表达式验证电话号码 - Javascript

电话号码的格式各国不尽相同,因此我们需要根据实际情况制定相应的正则表达式进行验证。 在本篇文章中,我们将介绍如何使用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