package com.walker.infrastructure.utils; import java.util.regex.Matcher; import java.util.regex.Pattern; public abstract class PhoneNumberUtils { /** * 手机号脱敏处理 * @param phone 手机号 * @date 2023-05-17 */ public static String maskMobile(String phone) { if (StringUtils.isEmpty(phone)) { return StringUtils.EMPTY_STRING; } return phone.replaceAll(REGEX_MOBILE_MASK, REGEX_MOBILE_REPLACE); } /** * 判断给定号码是否为固定号码 * @param number 固定电话号码 * @return */ public static final boolean isFixedPhoneNumber(String number){ Matcher match = PATTERN_FIXEDPHONE.matcher(number); return match.matches(); } /** * 判断是否为手机号码 * @param number * @return */ public static final boolean isCellPhoneNumber(String number){ Matcher match = PATTERN_MOBILEPHONE.matcher(number); return match.matches(); } /** * 获取固定号码号码中的区号 * * @param strNumber * @return */ public static final String getZipFromHomephone(String strNumber) { Matcher matcher = PATTERN_ZIPCODE.matcher(strNumber); if (matcher.find()) { return matcher.group(1); } return null; } public static final String REGEX_MOBILE_REPLACE = "$1****$2"; public static final String REGEX_MOBILE_MASK = "(\\d{3})\\d{4}(\\d{4})"; //用于匹配手机号码 public final static String REGEX_MOBILEPHONE = "^0?1[3456789]\\d{9}$"; //用于匹配固定电话号码 public final static String REGEX_FIXEDPHONE = "^(010|02\\d|0[3-9]\\d{2})?\\d{6,8}$"; //用于获取固定电话中的区号 public final static String REGEX_ZIPCODE = "^(010|02\\d|0[3-9]\\d{2})\\d{6,8}$"; private static final Pattern PATTERN_FIXEDPHONE = Pattern.compile(REGEX_FIXEDPHONE); private static final Pattern PATTERN_MOBILEPHONE = Pattern.compile(REGEX_MOBILEPHONE); private static final Pattern PATTERN_ZIPCODE = Pattern.compile(REGEX_ZIPCODE); }