Java正規表現-携帯電話番号の適合性を検証

1576 ワード

regex 1検証条件は便利で、広範囲にカバーできます.
ただしregex 2を用いた検証条件を細分化したほうがよい.
/**
 *           
 * @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;
		  //       ,           166   ,      
	      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+"   ,     !");
	    }
	  }

}

詳細:
これは正規表現ですcompile("***");これは規範です
Patternクラスは、正規表現を作成するために使用する、Patternオブジェクトを生成して正規表現をコンパイルすることもできるし、マッチングモードを作成することもできる、その構築方法はプライベートであり、直接作成することはできないが、Patternを通じて行うことができる.String regexの単純なファクトリメソッドは正規表現を作成します.
Matcherクラスが登場する番だmatcher(CharSequence input)は、Matcherオブジェクトを返します.Matcherクラスの構造方法もプライベートで、勝手に作成することができず、Patternしか通過できません.matcher(CharSequence input)メソッドは、クラスのインスタンスを得る.
    String.matches()この方法は主に指定した文字列に一致するかどうかを返し、一致する場合はtrue、そうでない場合はfalseを返します.
 
参照元:
https://www.cnblogs.com/wangzn/p/7212587.html
https://blog.csdn.net/u010700335/article/details/44616451