這篇博客主要是用來總結一下java中的正則表達式。
1.認識正則
通過一個簡單的程序來了解一下正則有哪些好處:
問題:判斷一個字符串是否由數字組成
Demo:
/** *不使用正則表達式判斷一個字符串是否由數字組成 */ String s="0487561"; //把字符串轉換成字符數組 char[] cs=s.toCharArray(); boolean flag=true; for (int i=0;i<cs.length;i++) { if(!(cs[i]<='9'&&cs[i]>='0')) { flag=false; break; } } if(flag==true) { System.out.2.正則表達式正則表達式使用單個字符串來描述,匹配一系列符合某個句法規則的字 符串。正則表達式通常被用來檢索、替換那些符合某個模式的文本
java.util.regex包中提供以下兩個類,對正則表達式的支持:
Matcher類: 通過解釋Pattern對character sequence執行匹配操作的引擎
Pattern類 正則表達式的編譯表示形式。
Demo:
/** * 使用正則表達式進行判斷 */ if(s.matches("http://d+")) { System.out.println("字符串由數字組成"); } else { System.out.println("字符串不是由數字組成"); }3.Pattern類
public final class Pattern extends Object implements Serializable
正則表達式的編譯表達形式。指定為字符串的正則表達式必須首先被編譯為此類的實例
典型的調用順序: Pattern p = Pattern.compile(“a*b”); Matcher m = p.matcher(“aaaaab”); boolean b = m.matches();
4.Matcher類
public final class Matcher extends Object implements MatchResult
Matcher類的主要功能是用于進行正則的匹配,通過Pattern類中定 義完的正則,再使用Matcher類進行驗證或者替換。
常用的方法: boolean matches() 嘗試將整個區域與模式匹配
String replaceAll(String replacement) 替換模式與給定替換字符串相匹配的輸入序列的每個子序列
String replaceFirst(String replacement) 替換模式與給定替換字符串匹配的輸入序列的第一個子序列
//匹配的英文符號 String info="小白是個:高端大氣上檔次,低調奢華有內涵的人"; //匹配字符串中的標點符號 Pattern pattern =Pattern.compile("http://p{Punct}"); //根據標點符號對字符串進行拆分 String []str= pattern.split(info); for (String s:str) { System.out.println(s); } /** * 使用正則表達式匹配郵箱地址 */ String email="xiaobai@QQ.com"; Pattern pattern2 =Pattern.compile("http://w+@//w+.[a-zA-Z]+"); Matcher matcher=pattern2.matcher(email); if(matcher.matches()) { System.out.println("匹配"); } else { System.out.println("不匹配"); } /** * 使用正則表達式替換字符 */ String date="2013/11/05"; Pattern pattern3=Pattern.compile("/"); Matcher m2=pattern3.matcher(date); String s2=m2.replaceAll("-"); System.out.println(s2);5.String類對正則的支持
在JDK1.4之后加入了正則,隨后又更新了String的操作類,因為在 使用正則中,所有的內容通過字符串表示的比較多。在String類中有以下 的方法可以完成對正則表達式的支持:
boolean matches(String regex) 告知此字符串是否匹配給定的正則表達式
String replaceAll(String regex,String replacement) 使用給定的replacement替換此字符串,所有匹配給定的正則表達式的子字符串
String replaceFirst(String regex,String replacement) 使用給定的replacement替換此字符串,匹配給定的正則表達式的第一個字符串
String[] split(String regex) 根據給定正則表達式的匹配拆分此字符串
6.實例
1.驗證電話號碼(如:010-53517230) 2.驗證手機號 3.驗證用戶名,只能是字母開頭的數字、字母或下劃線組成
/** * 匹配電話號碼 * 區號最少3位,最多4位 X[n,m] 至少n次,不超過m次 */ String phonenumber="010-53517230"; boolean b=phonenumber.matches("http://d{3,4}-//d{7,8}"); if(b) { System.out.println("電話號碼格式正確"); } else { System.out.println("電話號碼格式不正確"); } /** * 驗證手機號: * 要求:必須為11位,首位必須為1,第二位為3~9,之后的尾數隨意 */ String phone="13143188844"; System.out.println(phone.matches("[1][3-9]//d{9}")); /** * 驗證用戶名,只能是字母開頭的數字、字母或下劃線組成 * []表示在這個范圍里面 * *表示0次或者多次 * +表示多次 */ String username="xb1314"; System.out.println(username.matches("[a-zA-Z]+[//w|_]*"));新聞熱點
疑難解答