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); } }