1d9aa87507c23d59561ce564905c02b3765f6fba.svn-base 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package cn.com.goldenwater.dcproj.utils;
  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;
  4. import java.util.regex.PatternSyntaxException;
  5. /**
  6. * @author lhc
  7. * @date 2020/11/18 15:22
  8. */
  9. public class PhoneFormatCheckUtils {
  10. /**
  11. * ^ 匹配输入字符串开始的位置
  12. * \d 匹配一个或多个数字,其中 \ 要转义,所以是 \\d
  13. * $ 匹配输入字符串结尾的位置
  14. */
  15. private static final Pattern HK_PATTERN = Pattern.compile("^(5|6|8|9)\\d{7}$");
  16. private static final Pattern CHINA_PATTERN = Pattern.compile("^((13[0-9])|(14[0,1,4-9])|(15[0-3,5-9])|(16[2,5,6,7])|(17[0-8])|(18[0-9])|(19[0-9]))\\d{8}$");
  17. private static final Pattern NUM_PATTERN = Pattern.compile("[0-9]+");
  18. /**
  19. * 大陆号码或香港号码均可
  20. */
  21. public static boolean isPhoneLegal(String str) throws PatternSyntaxException {
  22. return isChinaPhoneLegal(str) || isHKPhoneLegal(str);
  23. }
  24. /**
  25. * 大陆手机号码11位数,匹配格式:前三位固定格式+后8位任意数
  26. * 此方法中前三位格式有:
  27. * 13+任意数
  28. * 145,147,149
  29. * 15+除4的任意数(不要写^4,这样的话字母也会被认为是正确的)
  30. * 166
  31. * 17+3,5,6,7,8
  32. * 18+任意数
  33. * 198,199
  34. */
  35. public static boolean isChinaPhoneLegal(String str) throws PatternSyntaxException {
  36. Matcher m = CHINA_PATTERN.matcher(str);
  37. return m.matches();
  38. }
  39. /**
  40. * 香港手机号码8位数,5|6|8|9开头+7位任意数
  41. */
  42. public static boolean isHKPhoneLegal(String str) throws PatternSyntaxException {
  43. Matcher m = HK_PATTERN.matcher(str);
  44. return m.matches();
  45. }
  46. /**
  47. * 判断是否是正整数的方法
  48. */
  49. public static boolean isNumeric(String string) {
  50. return NUM_PATTERN.matcher(string).matches();
  51. }
  52. }