JS 手机号正则表达式

JS 手机号正则表达式

正则表达式是一种描述字符模式的方法。在 JavaScript 中,使用正则表达式可以轻松地对文本进行搜索、替换和提取操作。手机号正则表达式,就是用于检查一个字符串是否是合法的手机号并且符合特定格式的正则表达式。

在 JS 中,手机号正则表达式通常使用 RegExp 对象或正则表达式字面量方式定义。以下是一些案例和代码实现。

案例1:检查手机号码位数是否正确

有些国家或地区的手机号其位数可能是11位或12位,而有些则可能是10位或8位。

let phone = "13312345678";
let reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
if (reg.test(phone)) {
    console.log("手机号格式正确");
} else {
    console.log("手机号格式不正确");
}

解释:^[1] 表示必须以数字 1 开头,[3,4,5,6,7,8,9] 表示第二位数字只能是 3、4、5、6、7、8 或 9 中的一个,[0-9]{9} 表示第 3 到第 12 位的数字必须是 0 到 9 中的任意一位数字。整个正则表达式匹配 11 位数字,可用于检查国内手机号是否符合格式。

案例2:检查座机号码中的区号是否正确

对于座机号码,其区号一般由 3-4 位数字组成,可以通过正则表达式进行检查。

let phone = "010-12345678";
let reg = /^0\d{2}-\d{8}|^0\d{3}-\d{7,8}/;
if (reg.test(phone)) {
    console.log("座机号码格式正确");
} else {
    console.log("座机号码格式不正确");
}

解释:^0\d{2}-\d{8}$ 匹配区号为三位数字的座机号码,^0\d{3}-\d{7,8}$ 匹配区号为四位数字的座机号码。

案例3:检查手机号码格式是否正确(带+86)

有些地区的手机号前面会加上 +86,表示是中国的手机号码。这时候需要使用正则表达式进行匹配,并忽略 +86。

let phone = "+8613312345678";
let reg = /^(\+86)?(1[3-9][0-9])[0-9]{8}$/;
if (reg.test(phone)) {
    console.log("手机号格式正确");
} else {
    console.log("手机号格式不正确");
}

解释:^\+86? 表示以 +86 开始,可选,(1[3-9][0-9]) 表示第二位数字必须是 1,第三位数字只能是 3、4、5、6、7、8 或 9 中的一个,[0-9]{8} 表示第 4 到第 11 位的数字必须是 0 到 9 中的任意一位数字。

案例4:去掉手机号码中的空格和其他符号

在实际开发中,有些用户输入的手机号码可能包含空格、-、(、) 等符号,需要对输入的手机号码进行一些简单的过滤,将其转换成标准的手机号格式。

let phone = "133 1234 5678";
let reg = /[\s|\-|\(|\)]+/g;
let newPhone = phone.replace(reg, "");
console.log(newPhone);

解释:/[\s|\-|\(|\)]+/g 表示匹配字符串中的空格、-、(、) 等符号,并使用 g标志进行全局匹配。通过 replace 方法,将字符串中的这些符号全部替换为空字符串,得到的 newPhone 即为标准的手机号格式。

案例5:基于正则表达式对手机号进行格式化显示

在一些应用场景中,需要对用户输入的手机号进行格式化显示,以方便用户查看和输入。通过正则表达式,可以轻松地将手机号码转换成标准的格式,并显示给用户。

function formatPhone(phone) {
  let reg = /^(\d{3})(\d{4})(\d{4})/;
  return phone.replace(reg, "1-2-3");
}

let phone = "13312345678";
let newPhone = formatPhone(phone);
console.log(newPhone);

解释:/^(\d{3})(\d{4})(\d{4})$/ 表示将手机号码分成三组,即前三位、中间四位、后四位。通过 $1-$2-$3 可以将这三组数字转换成带有分隔符的标准格式,输出为 133-1234-5678。

总结

通过上述案例,我们可以了解到 JS 中常见的手机号正则表达式匹配方法。对于不同的输入场景和要求,需要根据具体的需求来设计和使用正则表达式,保证输入的数据符合规范并方便处理。同时,要注意正则表达式的性能和效率问题,避免出现死循环等问题。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程