手机号码相关正则表达式
2017-06-06 00:00
141 查看
摘要: 手机号码相关的正则表达式介绍,代码使用java实现
更多详情,请关注我的博客https://highter.github.io
import java.util.regex.Matcher; import java.util.regex.Pattern; public class CheckPhoneUtils { /** 电话格式验证 **/ private static final String PHONE_CALL_PATTERN = "^(\\(\\d{3,4}\\)|\\d{3,4}-)?\\d{7,8}(-\\d{1,4})?$"; /** * 中国电信号码格式验证 手机段: 133,153,180,181,189,177,1700 **/ private static final String CHINA_TELECOM_PATTERN = "(^1(33|53|77|8[019])\\d{8}$)|(^1700\\d{7}$)"; /** * 中国联通号码格式验证 手机段:130,131,132,155,156,185,186,145,176,1709 **/ private static final String CHINA_UNICOM_PATTERN = "(^1(3[0-2]|4[5]|5[56]|7[6]|8[56])\\d{8}$)|(^1709\\d{7}$)"; /** * 中国移动号码格式验证 * 手机段:134,135,136,137,138,139,150,151,152,157,158,159,182,183,184 * ,187,188,147,178,1705 **/ private static final String CHINA_MOBILE_PATTERN = "(^1(3[4-9]|4[7]|5[0-27-9]|7[8]|8[2-478])\\d{8}$)|(^1705\\d{7}$)"; /** * 验证电话号码的格式 * @param str * 校验电话字符串 * @return 返回true,否则为false */ public static boolean isPhoneCallNum(String str) { return str == null || str.trim().equals("") ? false : match(PHONE_CALL_PATTERN, str); } /** * 验证【电信】手机号码的格式 * @param str * 校验手机字符串 * @return 返回true,否则为false */ public static boolean isChinaTelecomPhoneNum(String str) { return str == null || str.trim().equals("") ? false : match(CHINA_TELECOM_PATTERN, str); } /** * 验证【联通】手机号码的格式 * @param str * 校验手机字符串 * @return 返回true,否则为false */ public static boolean isChinaUnicomPhoneNum(String str) { return str == null || str.trim().equals("") ? false : match(CHINA_UNICOM_PATTERN, str); } /** * 验证【移动】手机号码的格式 * @param str * 校验手机字符串 * @return 返回true,否则为false */ public static boolean isChinaMobilePhoneNum(String str) { return str == null || str.trim().equals("") ? false : match(CHINA_MOBILE_PATTERN, str); } /** * 验证手机和电话号码的格式 * @param str * 校验手机字符串 * @return 返回true,否则为false */ public static boolean isPhoneNum(String str) { // 如果字符串为空,直接返回false if (str == null || str.trim().equals("")) { return false; } else { int comma = str.indexOf(",");// 是否含有逗号 int caesuraSign = str.indexOf("、");// 是否含有顿号 int space = str.trim().indexOf(" ");// 是否含有空格 if (comma == -1 && caesuraSign == -1 && space == -1) { // 如果号码不含分隔符,直接验证 str = str.trim(); return (isPhoneCallNum(str) || isChinaTelecomPhoneNum(str) || isChinaUnicomPhoneNum(str) || isChinaMobilePhoneNum(str)) ? true : false; } else { // 号码含分隔符,先把分隔符统一处理为英文状态下的逗号 if (caesuraSign != -1) { str = str.replaceAll("、", ","); } if (space != -1) { str = str.replaceAll(" ", ","); } String[] phoneNumArr = str.split(","); // 遍历验证 for (String temp : phoneNumArr) { temp = temp.trim(); if (isPhoneCallNum(temp) || isChinaTelecomPhoneNum(temp) || isChinaUnicomPhoneNum(temp) || isChinaMobilePhoneNum(temp)) { continue; } else { return false; } } return true; } } } /** * 执行正则表达式 * * @param pat * 表达式 * @param str * 待验证字符串 * @return 返回true,否则为false */ private static boolean match(String pat, String str) { Pattern pattern = Pattern.compile(pat); Matcher match = pattern.matcher(str); return match.find(); } public static void main(String[] args) { System.out.println(isPhoneNum("17750581369")); System.out.println(isPhoneNum("13306061248")); System.out.println(isPhoneNum("17750581369,13306061248")); System.out.println(isPhoneNum("17750581369 13306061248")); System.out.println(isPhoneNum("17750581369、13306061248")); System.out.println(isPhoneNum("0596-3370653")); } }
更多详情,请关注我的博客https://highter.github.io
相关文章推荐
- 验证手机号码和电话号码的正则表达式
- 判断手机号码格式的正则表达式
- 证手机号码和电话号码的正则表达式
- 邮箱和手机号码正则表达式验证(手机号码支持188)-HTML-XHTML-CSS
- js正则表达式:验证邮箱格式、密码复杂度、手机号码、QQ号码
- iOS 手机号码正则表达式
- iOS开发正则表达式 判断手机号码,邮箱格式是否正确
- 正则表达式验证手机号码 iOS
- 最新手机号码正则表达式
- Javascript-最新手机号码、身份证正则表达式
- 手机号码验证---正则表达式
- 电话号码、手机号码、特殊号码的正则表达式
- javascript IP、域名、手机号码正则表达式验证代码
- JavaScript 电话手机号码正则表达式
- java正则表达式验证手机号码
- 验证手机号码和固定电话正则表达式
- js正则表达式——验证邮箱格式、邮编、身份证号码、是否为空、下拉框选项、密码、手机号码、电话号码
- Android版:验证手机号码的正则表达式
- 适用所有手机号码的正则表达式