JavaScript 手机号和固话验证

发布于:2025-05-19 ⋅ 阅读:(22) ⋅ 点赞:(0)

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 - 无效号码

功能说明

  1. 手机号验证

    • 支持11位手机号(以1开头,第二位3-9)
    • 支持带+86或0086前缀的国际格式
  2. 固定电话验证

    • 支持带区号(3-4位)和不带区号格式
    • 支持7位或8位本地号码
    • 支持分机号(用-连接)
    • 区号和号码之间可以用-连接(可选)

使用建议

  1. 在实际应用中,可以先调用此函数进行基本格式验证
  2. 对于更严格的验证,可以添加额外的逻辑(如区号有效性检查)
  3. 在表单提交前调用此函数进行验证

如果需要更精确的验证(如区分手机号和固话),可以修改函数返回更详细的结果而非布尔值。


网站公告

今日签到

点亮在社区的每一天
去签到