给我用java写一个手机号的正则校验,包括全球手机号
时间: 2023-11-09 14:55:40 浏览: 43
以下是一个简单的手机号正则表达式校验,包括全球手机号:
```java
import java.util.regex.Pattern;
public class PhoneNumberValidator {
public static boolean isValidPhoneNumber(String phoneNumber) {
String regex = "^((\\+86)|(\\+86\\s)|(\\+\\d{1,3}\\s)|(\\(\\+\\d{1,3}\\)\\s))?((1[0-9]{10})|(\\d{7,20}))$";
return Pattern.matches(regex, phoneNumber);
}
}
```
这个正则表达式可以匹配以下几种格式的手机号:
- 中国大陆手机号:11位数字,以1开头
- 中国香港手机号:8位数字,以5、6、8、9开头,可加上+852或00852
- 中国澳门手机号:8位数字,以6开头,可加上+853或00853
- 中国台湾手机号:10位数字,以09开头,可加上+886或00886
- 其他全球国家手机号:7到20位数字,可加上国际电话区号(+号或括号+号),但不包括中国大陆、香港、澳门、台湾的手机号码
注意,这个正则表达式只是一个简单的校验,不能完全保证所有的手机号都是有效的。对于一些特殊情况,可能需要根据具体需求进行修改。
相关问题
java手机号正则校验
这段JAVA代码实现了手机号码的正则校验,可以校验13*、15*、18*三个号码段。具体实现方法是使用正则表达式,通过Pattern.matches()方法进行匹配。如果传入的手机号码不为空且符合正则表达式,则返回true,否则返回false。以下是代码实现:
public static boolean isValidPhoneNumber(String phoneNumber) {
if ((phoneNumber != null) && (!phoneNumber.isEmpty())) {
return Pattern.matches("^1[3-9]\\d{9}$", phoneNumber);
}
return false;
}
其中,"^1[3-9]\\d{9}$"是正则表达式,表示以1开头,第二位是3-9之间的数字,后面跟着9位数字。如果需要增加其他号码段的校验,只需要修改正则表达式即可。
生成一个手机号正则校验
当地手机号码格式千差万别,以下是中国大陆手机号的正则校验:
```^(13[0-9]|14[5-9]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\d{8}$```
这个正则表达式可以校验以13、14、15、16、17、18、19开头的11位数字串是否为一个合法的手机号码。其中,14、17、16、19开头的手机号码是近年来新增的。