# 0511-4405222 | 021-87888822
\d{3}-\d{8}|\d{4}-\d{7}
# (021)1234567 | (0411)123456
^\(0\d{2}|\d{4}\)\d{6,7}$
# +8613012345678 | 86 13012345678 | 13245679087 ^(?\+?(?:86)?)(? \s?-?)(? (? (13|15|18)\d)(?\d{4})(? \d{4}))$
命名捕獲組:national(國際碼)、separator(分隔符)、vender(運營商段)、area/id(號碼段)。
public class PhoneValidator {
private static final Pattern LANDLINE = Pattern.compile("\\d{3}-\\d{8}|\\d{4}-\\d{7}");
private static final Pattern MOBILE = Pattern.compile("^(\\+?86|86)?[-\\s]?(1[3-9]\\d{9})$");
public static boolean isLandline(String s) { return LANDLINE.matcher(s).matches(); }
public static boolean isMobile(String s) { return MOBILE.matcher(s).matches(); }
}