返回

正则表达式教程:中国手机号(宽松)

正则表达式

一、正则解释

模式
^ 匹配字符串的开头
(?:) 非捕获组,表示以下部分不会被捕获
`(?:+ 00)86`
1[3-9] 匹配手机号开头,必须是 1 后跟 3-9 之间的数字
\d{9} 匹配剩下的 9 位数字
$ 匹配字符串的结尾

二、使用场景

该正则表达式适用于需要验证中国手机号的场景,例如:

  • 用户注册
  • 电商下单
  • 数据统计

三、代码示例

JavaScript

const regex = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
const result = regex.test('18311006933'); // true

Java

import java.util.regex.Pattern;

public class PhoneNumberValidator {
    private static final Pattern PATTERN = Pattern.compile("^(?:(?:\\+|00)86)?1[3-9]\\d{9}
import java.util.regex.Pattern;

public class PhoneNumberValidator {
    private static final Pattern PATTERN = Pattern.compile("^(?:(?:\\+|00)86)?1[3-9]\\d{9}$");

    public static boolean isValid(String phoneNumber) {
        return PATTERN.matcher(phoneNumber).matches();
    }

    public static void main(String[] args) {
        System.out.println(isValid("18311006933")); // true
    }
}
quot;
); public static boolean isValid(String phoneNumber) { return PATTERN.matcher(phoneNumber).matches(); } public static void main(String[] args) { System.out.println(isValid("18311006933")); // true } }

PHP

<?php
$pattern = '/^(?:(?:\+|00)86)?1[3-9]\d{9}$/';
$result = preg_match($pattern, '18311006933'); // 1
?>

Python

import re

pattern = r"^(?:(?:\+|00)86)?1[3-9]\d{9}
import re

pattern = r"^(?:(?:\+|00)86)?1[3-9]\d{9}$"
result = re.match(pattern, '18311006933')
print(result) # <re.Match object; span=(0, 11), match='18311006933'>
quot;
result = re.match(pattern, '18311006933') print(result) # <re.Match object; span=(0, 11), match='18311006933'>