Java驗證手機號

  • 2019 年 10 月 6 日
  • 筆記

在實際開發中我們需要對手機號格式校驗,以下是對中國手機號校驗的實現。

public class PhoneUtils {        /**       * 中國手機號碼       */      private static Pattern CHINESE_PHONE_PATTERN = Pattern.compile("((13|15|17|18)\d{9})|(14[57]\d{8})");          /**       * 是否是有效的中國手機號碼       * @param phone       * @return       */      public static boolean isValidChinesePhone(String phone) {          if (phone == null || phone.length() != 11) {              return false;          }            Matcher matcher = CHINESE_PHONE_PATTERN.matcher(phone);          return matcher.matches();      }          /**       * 檢查手機是否無效       * @param phone       * @return       */      public static boolean isNotValidChinesePhone(String phone) {          return !isValidChinesePhone(phone);      }          /**       * 手機中間添加星號       * @param phone       * @param beginIndex       * @param endIndex       * @return empty string if phone length is illegal       */      public static String setAsterisk(String phone, int beginIndex, int endIndex) {            if (StringUtils.isBlank(phone)) {              return StringUtils.EMPTY;          }            if (beginIndex < 0 || endIndex < 0 || beginIndex > phone.length() || endIndex > phone.length()) {              throw new IllegalArgumentException("illegal index " + beginIndex + "," + endIndex);          }            StringBuilder phoneWithAsterisk = new StringBuilder(phone.substring(0, beginIndex));            for (int i = beginIndex; i < endIndex; i++) {              phoneWithAsterisk.append("*");          }            phoneWithAsterisk.append(phone.substring(endIndex, phone.length()));          return phoneWithAsterisk.toString();      }        /**       * 手機中間添加星號       * @param phone       * @return       */      public static String setAsterisk(String phone) {          return setAsterisk(phone, 3, 7);      }        /**       * 手機中間添加星號,中間六位       * @param phone       * @return       */      public static String setAsterisk2(String phone) {          return setAsterisk(phone, 3, 9);      }  }