2019最新的手机号码正则表达式
看着我的手机号码验证又被测试给踢了回来,没办法自己只能写一个备用了。
参考博客:
https://blog.csdn.net/u010085362/article/details/80347225
直接贴出我的正则:
^((\\+?86)|(\\(\\+86\\)))?((((13[^4]{1})|(14[5-9]{1})|147|(15[^4]{1})|166|(17\\d{1})|(18\\d{1})|(19[89]{1}))\\d{8})|((134[^9]{1}|1410|1440)\\d{7}))$
有问题请告知,自己简单的测试了下,应该没问题
基于有些小伙伴测试有问题,特附上代码测试(2021.2.5更新)
public static void main(String[] args) {
List<String> mobiles = new ArrayList<>();
mobiles.add("+8613497058184");
mobiles.add("8613497058184");
mobiles.add("13487058184");
mobiles.add("14107058184");
mobiles.add("13457019273");
mobiles.add("13497019273");
String regex = "^((\\+?86)|(\\(\\+86\\)))?((((13[^4])|(14[5-9])|147|(15[^4])|166|(17\\d)|(18\\d)|(19[89]))\\d{8})|((134[^9]|1410|1440)\\d{7}))$";
regex = "^((((13[^4])|(14[5-9])|147|(15[^4])|166|(17\\d)|(18\\d)|(19[89]))\\d{8})|((134[^9]|1410|1440)\\d{7}))$";
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
for(String mobile:mobiles){
Matcher matcher = pattern.matcher(mobile);
System.out.print("["+mobile + "] ");
System.out.println(matcher.matches()?" match!":" not match!");
}
}