package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class NumberUtil {
//用于匹配手机号码
private final static String REGEX_MOBILEPHONE = "^0?1[3458]\\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);
}
/**
* 判断是否为手机号码
*
* @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();
}
/**
* 获取固定号码号码中的区号
*
* @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 strNumber 固化号码
* @param split 分隔符
* @return
*/
public static String getTransformedFixedPhone(String strNumber,String split) {
/**
* 不是固定电话返回
*/
if(!isFixedPhone(strNumber)){
return strNumber;
}
//设置默认分隔符
if(split==null){
split="-";
}
Matcher matcher = PATTERN_ZIPCODE.matcher(strNumber);
//这里只有一个号码
if (matcher.find()) {
String temp1 = matcher.group(1);//获取区号
String temp2 = matcher.group(2);//获取区号后的号码
//加分隔符拼装
return temp1+split+temp2;
}
return strNumber;
}
/**
* 检查号码类型,并获取号码前缀,手机获取前7位,固话获取区号
* @param number
* @return
*/
public static String checkNumber(String number){
if(number==null || "".equals(number.trim())){
return number;
}
if(isCellPhone(number)){
//如果手机号码以0开始,则去掉0
if(number.charAt(0) == '0'){
number = number.substring(1);
}
}else if(isFixedPhone(number)){
number = getTransformedFixedPhone(number,null);
}
return number;
}
public static void main(String[] args){
String number = "02552160433";
number = checkNumber(number);
System.out.println(number);
number = "013951699549";
number = checkNumber(number);
System.out.println(number);
number = "051687189099";
number = checkNumber(number);
System.out.println(number);
number = "52160433";
number = checkNumber(number);
System.out.println(number);
number = "010112233";
number = checkNumber(number);
System.out.println(number);
}
}
输出结果
025-52160433
13951699549
0516-87189099
52160433
010-112233
java正则表达式判断分隔电话号码
最新推荐文章于 2024-04-28 10:35:01 发布