import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PhoneUtils {
/**
* 用于匹配手机号码
*/
private final static String REGEX_MOBILEPHONE = "^0?1[34578]\\d{9}$";
/**
* 用于匹配固定电话号码
*/
private final static String REGEX_FIXEDPHONE = "^(010|02\\d|0[3-9]\\d{2})?\\d{6,8}$";
/**
* 用于获取固定电话中的区号
*/
private final static String REGEX_ZIPCODE = "^(010|02\\d|0[3-9]\\d{2})\\d{6,8}$";
private static Pattern PATTERN_MOBILEPHONE;
private static Pattern PATTERN_FIXEDPHONE;
private static Pattern PATTERN_ZIPCODE;
static {
PATTERN_FIXEDPHONE = Pattern.compile(REGEX_FIXEDPHONE);
PATTERN_MOBILEPHONE = Pattern.compile(REGEX_MOBILEPHONE);
PATTERN_ZIPCODE = Pattern.compile(REGEX_ZIPCODE);
}
public static Map<String, String> checkNumber(String number) {
Map<String, String> map = new HashMap<>();
String phoneType = null;
String code = null;
if (number != null && number.length() > 0) {
if (isCellPhone(number)) {
// 如果手机号码以0开始,则去掉0
if (number.charAt(0) == '0') {
number = number.substring(1);
}
phoneType = "手机";
code = number.substring(0, 7);
} else if (isFixedPhone(number)) {
// 获取区号
String zipCode = getZipFromHomephone(number);
phoneType = "座机";
code = zipCode;
} else {
phoneType = "无效手机";
code = null;
}
}
map.put("phoneType", phoneType);
map.put("code", code);
return map;
}
/**
* 获取固定号码号码中的区号
*
* @param strNumber
* @return
*/
public static String getZipFromHomephone(String strNumber) {
Matcher matcher = PATTERN_ZIPCODE.matcher(strNumber);
if (matcher.find()) {
return matcher.group(1);
}
return null;
}
/**
* 判断是否为手机号码
*
* @param number 手机号码
* @return
*/
public static boolean isCellPhone(String number) {
Matcher match = PATTERN_MOBILEPHONE.matcher(number);
return match.matches();
}
/**
* 判断是否为固定电话号码
*
* @param number 固定电话号码
* @return
*/
public static boolean isFixedPhone(String number) {
Matcher match = PATTERN_FIXEDPHONE.matcher(number);
return match.matches();
}
public static void main(String[] args) {
System.out.println(checkNumber("051284619003"));
System.out.println(checkNumber("13412249197"));
}
}
JAVA判断号码是手机还是固话并获取号码区号
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1、PHP根据身份证号码,获取性别。 2、PHP根据身份证号码,获取生日。 3、PHP根据身份证号码,计算年龄。 ...
- 本篇记录说明 微信小程序获取用户手机号码,Java后台servlet解密 (第一次写博客,写得不好的地方见谅,面向...
- 人们问爱因斯坦为何能在1905年提出那么多改变人类认识世界的理论,他谦虚地回答道: “并不是我很聪明,只是我和问题...