在JavaScript中,可以使用正则表达式来校验手机号码的格式是否正确。以下是一些常见的方法:
方法一:基本格式校验
```javascript
function validateMobile(mobile) {
const reg = /^1[0-9]{10}$/;
return reg.test(mobile);
}
```
这个方法只校验手机号码是否为10位数字,以1开头。
方法二:更全面的格式校验
```javascript
function checkPhone() {
var mobile = document.getElementById("mobile").value;
if (mobile == "") {
alert("请输入手机号码");
mobile.focus();
return;
}
var regExp = /^(86)?((13\d{9})|(15[0,1,2,3,5,6,7,8,9]\d{8})|(18[0,5,6,7,8,9]\d{8}))$/;
if (!regExp.test(mobile)) {
alert("手机号码格式错误");
mobile.focus();
return;
}
}
```
这个方法考虑了手机号码可能带有86前缀,并且支持11位数字的格式。
方法三:特定运营商的校验
```javascript
var isChinaMobile = /^134[0-8]\d{7}$|^(?:13[5-9]|147|15[0-27-9]|178|18[2-478])\d{8}$/;
var isChinaUnion = /^(?:13[0-2]|145|15|176|18)\d{8}$/;
var isChinaTelcom = /^(?:133|153|177|18)\d{8}$/;
var isOtherTelphone = /^170()\d{7}$/;
function checkMobile(telphone) {
telphone = telphone.trim();
if (telphone.length !== 11) {
return { valid: false, message: '未检测到正确的手机号码' };
} else {
if (isChinaMobile.test(telphone)) {
return { valid: true, carrier: '移动' };
} else if (isChinaUnion.test(telphone)) {
return { valid: true, carrier: '联通' };
} else if (isChinaTelcom.test(telphone)) {
return { valid: true, carrier: '电信' };
} else if (isOtherTelphone.test(telphone)) {
return { valid: true, carrier: '其他运营商' };
} else {
return { valid: false, message: '手机号码格式错误' };
}
}
}
```
这个方法可以校验特定运营商的手机号码,并返回验证结果及运营商信息。
使用示例
```html