Java基礎回顧 : 正則表達式

利用正則表達式可以方便的幫助用戶進行數據的驗證、拆分、替換等功能.

如果要想正確的驅動正則的操作,那麼主要依靠String 類之中的方法:

① . · 驗證正則 : 字符串是否匹配給定的正則表達式
public boolean matches(String regex)
② . · 替換 : 使用給定的 replacement 替換此字符串所有匹配給定的正則表達式的子字符串。
public String replaceAll(String regex,String replacement)
③ . · 字符串拆分 : 根據給定正則表達式的匹配拆分此字符串。
public String[] split(String regex)


正則表達式 :

如果要想表示數字可以使用“\d”的標記,同時也可以寫成“[0-9]”

預定義字符類
. 任何字符(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 單詞字符:[a-zA-Z_0-9]
\W 非單詞字符:[^\w]
· [abc]:表示可能是a、b、c 中的一個;
· [^abc]:表示不是a、b、c 中的一個;
· [a-zA-Z]:表示所有的字母,包括大小寫;
· [^a-zA-Z]:表示所有的非字母

· ?:表示正則出現0 次、1 次;
· *:表示正則出現0 次、1 次、多次;
· +:表示正則出現1 次或多次;
· {n}:表示正則出現正好n 次;
· {n,}:表示正則出現n 次以上;
· {n,m}:表示正則出現n~m 次。


範例:現在用戶名要求由字母、數字、_所組成,並且長度在6~15 位之間。

public class TestDemo {
	public static void main(String[] args) {
		String str = "hello123";
		String regex = "\\w{6,15}"; // [a-zA-Z0-9_]{6,15}
		System.out.println(str.matches(regex));
	}
}
對於本程序正則的編寫原則:
· 設置字符的取值範圍:[a-zA-Z0-9_];
· 設置固定的長度比較可以使用“{}”;
· 正則之中提供了簡化的符號:\w


範例:驗證電話號碼
現在有以下幾種電話號碼格式:
· 51283346
· 010-51283346
那麼要求編寫一個正則可以同時滿足以上兩種電話格式的要求。

public class TestDemo {
	public static void main(String[] args) {
		String str = "010-51283346";
		String regex = "(\\d{3,4}-)?\\d{7,8}";
		System.out.println(str.matches(regex));
	}
}
· 對電話號碼而言,只要是7 位或8 位都可以;  \\d{7,8}
· 區號和號碼中的-應該同時出現,如果要將多個正則設置爲一組,那麼使用“()”表示。


範例:驗證email 地址
一般而言,email 地址的組成:
· 用戶名爲字母、數字、.
· 域名爲字母、數字、-、_所組成;
· 後綴必須是:.com、.cn、.com.cn、.net、org、edu。
· 字母、數字、.的組合沒有現成的簡化符號:[a-zA-Z0-9\\.]+
· @標記應該原樣輸出;
· 域名爲字母、數字、-、_所組成:[a-zA-Z0-9\\-_]+
· 後綴必須是:.com、.cn、.com.cn、.net、org、edu

public class TestDemo {
	public static void main(String[] args) {
		String str = "[email protected]";
		String regex = "[a-zA-Z0-9\\.]+@[a-zA-Z0-9\\-_]+\\.(com|net|com\\.cn|org|edu";
		System.out.println(str.matches(regex));
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章