Java處理正則驗證手機號-詳解


參考博客:https://www.cnblogs.com/wangzn/p/7212587.html

https://www.cnblogs.com/go4mi/p/6426215.html

 

package phone;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 運營商號段如下:
 * 中國聯通號碼: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 :1
 * 2 :3,4,5,7,8
 * 3 :0,1,2,3,4,5,6,7,8,9 
 * 總結: 目前java手機號碼正則表達式有:
 * a :"^1[3|4|5|7|8][0-9]\\d{4,8}$"    一般驗證情況下這個就可以了
 * b :"^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$"
 * Pattern和Matcher詳解(字符串匹配和字節碼)http://blog.csdn.net/u010700335/article/details/44616451
 */

 1 public class MyPhoneTest {
 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("您的手機號" + phone + "是正確格式@——@");
14             } else {
15                 System.out.println("您的手機號" + phone + "是錯誤格式!!!");
16             }
17         }
18     }

     /**

     * 詳解:這是正則表達式Pattern.compile("***");這個是規范
    Pattern類用於創建一個正則表達式,生成一個Pattern對象並且編譯一個正則表達式,也可以說創建一個匹配模式,
    它的構造方法是私有的,不可以直接創建,    但可以通過Pattern.complie(String regex)簡單工廠方法創建一個正則表達式,
    輪到Matcher類登場了,Pattern.matcher(CharSequence input)返回一個Matcher對象. 
    
    Matcher類的構造方法也是私有的,不能隨意創建,只能通過Pattern.matcher(CharSequence input)方法得到該類的實例
    String.matches() 這個方法主要是返回是否匹配指定的字符串,如果匹配則為true,否則為false;
}

 

我在項目中的使用:

main類:

 1 import java.util.regex.Matcher;
 2 import java.util.regex.Pattern;
 3 
 4 public class Main {
 5 
 6     public static void main(String[] args) {
 7         String str = "13195650000";
 8         if (str.matches(Contant.REGEX_MOBILE)) {
 9             System.out.println("是手機號");
10         } else {
11             System.out.println("不是手機號");
12         }
13     }
14 }

Contant類:

1 public class Contant {
2 
3     public static final String REGEX_MOBILE = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$";
4 
5 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM