正則表達式的組成規則
字符
x 字符 x正則表達式
字符類
[abc] a、b 或 c(簡單類)
[^abc] 任何字符,除了 a、b 或 c(否認)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍)測試
預約義字符類
. 任何字符(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\w 單詞字符:[a-zA-Z_0-9]對象
Greedy 數量詞
X? X,一次或一次也沒有
X* X,零次或屢次
X+ X,一次或屢次
X{n} X,剛好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,可是不超過 m 次字符串
正則表達式的判斷功能
public boolean matches(String regex) 通知此字符串是否匹配給定的正則表達式。
//正確校驗手機號:組成規則是 長度是11,以1開頭,第二位是3或5或8
String tel="158858880644";
//定義規則:1表示第一位只能是1,[358]表示第二位只能是3或5或8,
//剩下的是0--9之間的任意數字,手機號剛好是11位,因此,剩下的剛好是9次
//因此對應寫法就是[0-9]{9}
String regex ="1[358][0-9]{9}";
System.out.println(tel.matches(regex));//若是匹配返回trueget
正則表達式的分割功能
public String[] split(String regex) 根據給定的正則表達式的匹配來拆分此字符串。
String str ="張三-李四-王五";
//定義規則
String regex="-";
String[] arr = str.split(regex);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}域名
正則表達式的替換功能
public String replaceAll(String regex,String replacement) 使用給定的 replacement 字符串替換此字符串匹配給定的正則表達式的每一個子字符串。
String s ="112233";
String s2 = s.replaceAll("11","99");
System.out.println(s+"將11替換爲99替換後爲:"+s2);it
String str="zhangssssqingzzzlun";
String s = str.replaceAll("(.)\1+", "@");
System.out.println(str+"將疊詞替換成@替換後爲::"+s);email
正則表達式的獲取功能
//取出長度爲3的單詞
String str ="da jia hao wo shi zhang qing lun wo cao !";
//將規則封裝成對象,\b表示單詞的邊界,[a-zA-Z]{3}表示字母剛好出現3次
Pattern p = Pattern.compile("\b[a-zA-Z]{3}\b");
//獲得匹配器對象
Matcher m = p.matcher(str);
while(m.find()) {//m.find();含有下一個匹配的元素
System.out.println(m.group());//取出匹配的元素
}qq
正則案例while
正則校驗QQ
String qq="1234567894567845678";
//[1-9]表示第一位只能是1--9,不包含0
//[0-9]{4,14}表示0--9至少出現4次,最多出現14次,
//由於要求是5--15次,除去第一位,因此是4--14
String s ="[1-9][0-9]{4,14}";
System.out.println(qq.matches(s));
結果說明:只有知足該正則的字符串返回值纔是true
咱們在作測試時,各類狀況都要測試,也就是咱們的測試:好比:
1.第一位爲0的狀況
2.長度不足5位或者超出15位
3.含有字母等
4.正確演示
正則校驗手機
//正確校驗手機號:組成規則是 長度是11,以1開頭,第二位是3或5或8
String tel="158858880644";
//定義規則:1表示第一位只能是1,[358]表示第二位只能是3或5或8,
//剩下的是0--9之間的任意數字,手機號剛好是11位,因此,剩下的剛好是9次
//因此對應寫法就是[0-9]{9}
String regex ="1[358][0-9]{9}";
System.out.println(tel.matches(regex));//若是匹配返回true
結果說明:只有知足該正則的字符串返回值纔是true
測試時應該涵蓋全部的狀況。
正則校驗郵箱
//用戶名@域名
例如:116zql@jiyun.com 116zql@jiyun.com.cn 116zql@jiyun.com.cn.org
String email="116zql@jiyun.com.cn";
//[a-zA-Z_0-9]+@[a-zA-Z0-9]+表示用戶名
//(\.[a-zA-Z]{2,3}){1,3}表示域名,{2,3}表示相似com,cn這樣的域名單詞字符數
{1,3}表示com,cn這樣的域名只能出現1—3次
String regex="[a-zA-Z_0-9]+@[a-zA-Z0-9]+(\.[a-zA-Z]{2,3}){1,3}";
System.out.println(email.matches(regex));
// 結果:true
正則分割字符串
String str ="張三---李四------王五-趙六--周七";
//定義規則。"-+"表示"-"出現一次或者屢次
String regex="-+";
String[] arr = str.split(regex);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
正則屏蔽敏感詞彙
//手機號隱藏中間四位
String s ="13885888064";
//344類型的手機號,前三位第一組,中四爲第二組,後四爲第三組
//將中間的用替換,第一種組和第三組不變,不一樣的正則之間使用組是經過$+組名 String s2 = s.replaceAll("(\d{3})\d{4}(\d{4})", "$1$2"); System.out.println(s2);