1. 程式人生 > >Java正則表示式——驗證手機號碼符合性

Java正則表示式——驗證手機號碼符合性

regex1驗證條件很方便,可以大範圍覆蓋,

但是還是細分一下使用regex2驗證條件比較好一些。

/**
 * 驗證手機號碼的合法性
 * @author jy
 */
package mobile;

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

public class mobileTest {
	  
	  public static boolean isMobile(String str) {
		  Pattern p = null;
	      Matcher m = null;
	      boolean isMatch = false;
		  //制定驗證條件
	      String regex1 = "^[1][3,4,5,7,8][0-9]{9}$";
	      String regex2 = "^((13[0-9])|(14[579])|(15([0-3,5-9]))|(16[6])|(17[0135678])|(18[0-9]|19[89]))\\d{8}$";
	     
	      p = Pattern.compile(regex2);
	      m = p.matcher(str);
	      isMatch = m.matches();
	      return isMatch;
	  }
	  
	  public static void main(String[] args) {
	    String phone = "19968791843";
	    if(isMobile(phone)){
	      System.out.println(phone+"是符合的手機號碼");
	    }else {
		  System.out.println(phone+"不符合,請重新輸入!");
	    }
	  }

}

詳解:

    這是正則表示式Pattern.compile("***");這個是規範

    Pattern類用於建立一個正則表示式,生成一個Pattern物件並且編譯一個正則表示式,也可以說建立一個匹配模式
    它的構造方法是私有的,不可以直接建立,但可以通過Pattern.complie(String regex)簡單工廠方法建立一個正則表示式

    輪到Matcher類登場了,Pattern.matcher(CharSequence input)返回一個Matcher物件.。
    Matcher類的構造方法也是私有的,不能隨意建立,只能通過Pattern.matcher(CharSequence input)方法

得到該類的例項。

    String.matches() 這個方法主要是返回是否匹配指定的字串,如果匹配則為true,否則為false。

參考來源: