返回
正则表达式教程:中国手机号(宽松)
正则表达式
2024-02-28 15:58:21
一、正则解释
模式 | |
---|---|
^ |
匹配字符串的开头 |
(?:) |
非捕获组,表示以下部分不会被捕获 |
`(?:+ | 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'>