脚本如何校验手机号格式

wen 实用脚本 25

本文目录导读:

脚本如何校验手机号格式

  1. JavaScript(前端)
  2. Python
  3. Java
  4. PHP
  5. SQL(MySQL)
  6. 通用正则表达式说明
  7. 国际手机号格式
  8. 最佳实践建议

JavaScript(前端)

function validatePhone(phone) {
    // 中国大陆手机号(11位,1开头)
    const reg = /^1[3-9]\d{9}$/;
    return reg.test(phone);
}
// 使用示例
console.log(validatePhone('13800138000')); // true
console.log(validatePhone('12345678901')); // false

更严格的版本(包含号段更新):

function validatePhoneStrict(phone) {
    // 支持更精确的号段验证
    const reg = /^1(?:3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/;
    return reg.test(phone);
}

Python

import re
def validate_phone(phone):
    # 中国大陆手机号
    pattern = r'^1[3-9]\d{9}$'
    return bool(re.match(pattern, phone))
# 使用示例
print(validate_phone('13800138000'))  # True
print(validate_phone('12345678901'))  # False

Java

import java.util.regex.Pattern;
public class PhoneValidator {
    private static final Pattern PHONE_PATTERN = 
        Pattern.compile("^1[3-9]\\d{9}$");
    public static boolean validate(String phone) {
        return PHONE_PATTERN.matcher(phone).matches();
    }
    public static void main(String[] args) {
        System.out.println(validate("13800138000")); // true
        System.out.println(validate("12345678901")); // false
    }
}

PHP

function validatePhone($phone) {
    return preg_match('/^1[3-9]\d{9}$/', $phone) === 1;
}
// 使用示例
echo validatePhone('13800138000') ? 'true' : 'false'; // true
echo validatePhone('12345678901') ? 'true' : 'false'; // false

SQL(MySQL)

-- 查询时验证手机号
SELECT * FROM users 
WHERE phone REGEXP '^1[3-9][0-9]{9}$';
-- 创建表时添加约束
ALTER TABLE users 
ADD CONSTRAINT chk_phone 
CHECK (phone REGEXP '^1[3-9][0-9]{9}$');

通用正则表达式说明

^1[3-9]\d{9}$
  • - 匹配字符串开始
  • 1 - 手机号以1开头
  • [3-9] - 第二位数字3-9
  • \d{9} - 后面9位数字
  • - 匹配字符串结束

国际手机号格式

如果你需要支持国际手机号(包含国家代码):

// 国际手机号格式(支持+号开头)
const internationalReg = /^\+?1?\d{10,15}$/;
// 或更复杂的国际格式
const internationalReg2 = /^\+?\d{1,3}[-. ]?\d{1,14}$/;

最佳实践建议

  1. 先去除空格和分隔符phone.replace(/[\s-()]/g, '')
  2. 考虑国际格式:根据需要决定是否支持+86等国家代码
  3. 前端+后端双重验证:前端用于即时反馈,后端确保安全性
  4. 保持正则简单:过于复杂的正则可能漏掉有效的号段

根据你的实际需求选择合适的正则表达式,不同国家的手机号格式不同,以上主要适用于中国大陆手机号。

抱歉,评论功能暂时关闭!