本文目录导读:

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}$/;
最佳实践建议
- 先去除空格和分隔符:
phone.replace(/[\s-()]/g, '') - 考虑国际格式:根据需要决定是否支持
+86等国家代码 - 前端+后端双重验证:前端用于即时反馈,后端确保安全性
- 保持正则简单:过于复杂的正则可能漏掉有效的号段
根据你的实际需求选择合适的正则表达式,不同国家的手机号格式不同,以上主要适用于中国大陆手机号。