格式化手機號碼

手機號會存在加區號/國際ip號的問題,如+861585173214二、00861585173214二、17951158517332142或者0158517321142,上面幾個號碼實際都是同一個號碼,但加了不一樣的前綴。程序中會將上面幾種狀況視爲同一個號碼,具體邏輯以下:java

aaa.png

java參考代碼code

......
String tel = "+008613701234567";

//手機號正則
String reg = "^[0-9\\+]*?1[3456789]\\d{9}$";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = null; 

//過濾非數字字符  如 158-517 234 34  =》 15851723434
tel = tel.replaceAll("\\D", "");
			
//匹配手機號
matcher = pattern.matcher(tel);
if(tel.length() >= 11 && matcher.find()){
   tel = tel.substring(tel.length() - 11);
}else if(tel.length()>=7){//固話號碼(區號+7/8位)、未匹配到的手機號
   tel=tel.substring(tel.length()-7);
}
......

注:按照上述邏輯僅適用於查詢後的處理(去重等),不可用於處理入庫前的號碼數據。由於,8位的固話號碼(或正則未匹配到的手機號碼)會被截取爲7位,處理後的號碼再也不可撥打。blog

相關文章
相關標籤/搜索