JavaScript 手机号和固话验证
以下是一个 JavaScript 函数,可以同时验证中国大陆手机号和固定电话号码:
/**
* 验证电话号码(支持手机号和固话)
* @param {string} phone - 要验证的电话号码
* @returns {boolean} - 验证结果
*/
function validatePhoneNumber(phone) {
// 手机号正则表达式
const mobileReg = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
// 固话正则表达式(支持带区号和不带区号,支持分机号)
const landlineReg = /^(?:(?:\d{3}-)?\d{8}|(?:\d{4}-)?\d{7,8})(?:-\d+)?$/;
// 去除所有空格
const cleanedPhone = phone.replace(/\s+/g, '');
// 验证手机号或固话
return mobileReg.test(cleanedPhone) || landlineReg.test(cleanedPhone);
}
// 测试用例
console.log(validatePhoneNumber("13800138000")); // true - 手机号
console.log(validatePhoneNumber("+8613800138000")); // true - 带国际码的手机号
console.log(validatePhoneNumber("010-12345678")); // true - 带区号的固话
console.log(validatePhoneNumber("12345678")); // true - 不带区号的固话
console.log(validatePhoneNumber("0755-1234567")); // true - 7位固话
console.log(validatePhoneNumber("010-12345678-123"));// true - 带分机号的固话
console.log(validatePhoneNumber("12345")); // false - 无效号码
功能说明
手机号验证:
- 支持11位手机号(以1开头,第二位3-9)
- 支持带+86或0086前缀的国际格式
固定电话验证:
- 支持带区号(3-4位)和不带区号格式
- 支持7位或8位本地号码
- 支持分机号(用-连接)
- 区号和号码之间可以用-连接(可选)
使用建议
- 在实际应用中,可以先调用此函数进行基本格式验证
- 对于更严格的验证,可以添加额外的逻辑(如区号有效性检查)
- 在表单提交前调用此函数进行验证
如果需要更精确的验证(如区分手机号和固话),可以修改函数返回更详细的结果而非布尔值。