主要用到這兩個包:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Pattern類用於創建一個正則表達式,生成一個Pattern對象並且編譯一個正則表達式,也可以說創建一個匹配模式,
它的構造方法是私有的,不可以直接創建, 但可以通過Pattern.complie(String regex)簡單工廠方法創建一個正則表達式,
輪到Matcher類登場了,Pattern.matcher(CharSequence input)返回一個Matcher對象.
Matcher類的構造方法也是私有的,不能隨意創建,只能通過Pattern.matcher(CharSequence input)方法得到該類的實例
String.matches() 這個方法主要是返回是否匹配指定的字符串,如果匹配則為true,否則為false;
運營商號段信息:
中國聯通號碼:130、131、132、145(無線上網卡)、155、156、185(iPhone5上市后開放)、186、176(4G號段)、
175(2015年9月10日正式啟用,暫只對北京、上海和廣東投放辦理)
中國移動號碼:134、135、136、137、138、139、147(無線上網卡)、150、151、152、157、158、159、182、183、187、188、178
中國電信號碼:133、153、180、181、189、177、173、149 虛擬運營商:170、1718、1719
手機號前3位的數字包括:
第一位 :1
第二位:2 :3,4,5,7,8
第三位: 0,1,2,3,4,5,6,7,8,9
總結:
目前java手機號碼正則表達式有:
一: "^1[3|4|5|7|8][0-9]\\d{4,8}$" 一般驗證情況下這個就可以了
二: "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"
1 public class Test { 2 3 public static void main(String[] args) { 4 String phone = "13123456789"; 5 String regex = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"; 6 if(phone.length() != 11){ 7 System.out.println("手機號應為11位數"); 8 }else{ 9 Pattern p = Pattern.compile(regex); 10 Matcher m = p.matcher(phone); 11 boolean isMatch = m.matches(); 12 if(isMatch){ 13 System.out.println("您的手機號格式正確"); 14 } else { 15 System.out.println("您的手機號格式不正確"); 16 } 17 } 18 }