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