- 💂 個人首頁:陶然同學
- 🤟 版權:本文由【陶然同學】原創需要轉載請聯系部落客
- 💬 如果文章對你有幫助、歡迎關注、點贊、收藏(一鍵三連)和訂閱專欄哦
- 💅想尋找共同成長的小夥伴,請點選【Java全棧開發社群】
它來了!!!

看了熱榜正規表達式都上榜了目前正規表達式榜一是Python的 經過這幾天嘔心瀝血不眠不休 終于今天Java的正規表達式它來了 還有練習題 耗時9981個小時 都是幹貨 趕緊收藏起來!!!!
1.概念
正規表達式:正确規則的表達式
通常用來檢測字元串是否符合某規則、根據某規則切分字元串 或 替換符合規則的文本
例如:
檢查校驗字元串中的 QQ 号是否如何如下規則:
①必須為 5~15 位數字
②不能以 0 開頭
若使用之前代碼:
以上要求就可以變成一個正規表達式:[1-9][0-9]{4,14}
通過正規表達式,我們就可以檢查字元串中的 QQ 号是否符合要求了。
2.字元串正則的常用方法
舉例:校驗手機号碼
1:要求為 11 位數字
2:第 1 位為 1,第 2 位為 3、4、5、7、8 中的一個,後面 9 位為 0 到 9 之間的任意數字。
代碼示範:
String phone = "18810022666";
String regex = "1[34578][0-9]{9}";
boolean flag = phone.matches(regex);
方法名 | 描述 |
boolean matches(String regex) | 目前字元串是否比對給定的正規表達式 |
String replaceAll(String regex,String replacement) | 使用 replacement 替換目前字元串中所有符号正則表 達式的内容 |
String[] split(String regex) | 根據給定的正規表達式拆分目前字元串 |
練習:
1、
舉例:校驗 qq 号碼.
1:要求必須是 5-15 位數字
2:0 不能開頭
代碼示範:
String qq = "604154942";
String regex = "[1-9][0-9]{4,14}";
boolean flag2 = qq.matches(regex);
2、
舉例:校驗手機号碼
1:要求為 11 位數字
2:第 1 位為 1,第 2 位為 3、4、5、7、8 中的一個,後面 9 位為 0 到 9 之間的任意數字。
代碼示範:
String phone = "18810022666";
String regex = "1[34578][0-9]{9}";
boolean flag = phone.matches(regex);
3、
舉例:将字元串中的數字全部替換成!号
String str = "1a2b3c4d";
str = str.replaceAll("\\d", "!");
System.out.println(str);
4、
//根據空格切割字元串
String str = "我 很 帥";
String[] arr = str.split(" ");
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
5、注意:.的正則寫法必須為\\.
//根據.切割 IP 位址
String str = "192.168.11.88";
String[] arr = str.split("\\.");
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
是以這些練習題你都學廢了嘛
3.常見正規表達式
表達式 | 描述 |
^[a-z0-9_-]{3,16}$ | 使用者名 |
^[a-z0-9_-]{6,18}$ | 密碼 |
^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$ | 電子郵箱 |
[\u4e00-\u9fa5] | 比對中文字元的正規表達式 |
練習:
1、從控制台輸入一個字元串。使用正則來對字元串進行一系列操作:
①判斷字元串是否是一個合格的使用者名
②将字元串中的數字用”#”号替代. 數字的正則:[0-9] 或者 \\d
③根據”#”号将字元串切割成字元串數組并周遊展示
4.正規表達式-參考附錄
參照幫助文檔,在 Pattern 類中有正規表達式的的規則定義,正規表達式中明确區分大小寫字母。我們
來學習文法規則。
4.1規則
規則:x
含義:代表的是字元 x
例如:比對規則為 "a",那麼需要比對的字元串内容就是 ”a”
規則:\\\\
含義:代表的是斜線字元'\\'
例如:比對規則為"\\\\" ,那麼需要比對的字元串内容就是 ”\\”
規則:\\t
含義:制表符
例如:比對規則為"\\t" ,那麼對應的效果就是産生一個制表符的空間
規則:\\n
含義:換行符
例如:比對規則為"\\n",那麼對應的效果就是換行,光标在原有位置的下一行
規則:\\r
含義:回車符
例如:比對規則為"\\r",那麼對應的效果就是回車後的效果,光标來到下一行行首
規則:[abc]
含義:代表的是字元 a、b 或 c
例如:比對規則為"[abc]",那麼需要比對的内容就是字元 a,或者字元 b,或字元 c 的一個
規則:[^abc]
含義:代表的是除了 a、b 或 c 以外的任何字元
例如:比對規則為"[^abc]",那麼需要比對的内容就是不是字元 a,或者不是字元 b,或不是字元
c 的任意一個字元
規則:[a-zA-Z]
含義:代表的是 a 到 z 或 A 到 Z,兩頭的字母包括在内
例如:比對規則為"[a-zA-Z]",那麼需要比對的是一個大寫或者小寫字母
規則:[0-9]
含義:代表的是 0 到 9 數字,兩頭的數字包括在内
例如:比對規則為"[0-9]",那麼需要比對的是一個數字
規則:[a-zA-Z_0-9]
含義:代表的字母或者數字或者下劃線(即單詞字元)
例如:比對規則為" [a-zA-Z_0-9] ",那麼需要比對的是一個字母或者是一個數字或一個下滑線
規則:.
含義:代表的是任何字元
例如:比對規則為" . ",那麼需要比對的是一個任意字元。
規則:\\d
含義:相當于[0-9]。代表的是 0 到 9 數字,0 和 9 包括在内。
例如:比對規則為"\\d ",那麼需要比對的是一個數字
規則:\\w
含義:相當于[a-zA-Z_0-9]。代表的字母或者數字或者下劃線
例如:比對規則為"\\w ",,那麼需要比對的是一個字母或者是一個數字或一個下滑線
4.2邊界比對器(以x開頭或結尾)
邊界比對器:^
含義:代表以某些内容開頭
邊界比對器:$
含義:代表以某些内容結尾
邊界比對器:\\b
含義:代表的是單詞邊界。
注意:不能單獨使用,幾乎不使用
例如:比對規則為"\\b[abc]\\b",那麼代表的是字母 a 或 b 或 c 的左右兩邊需要的是非單詞字元
([a-zA-Z_0-9])
String regex = "\\b[a]\\b";
String str = "a";
booleanflag = str.matches(regex);
4.3數量詞
數量詞:X?
含義:代表的是 X 出現 0~1 次
例如:比對規則為"a?",那麼需要比對的内容是一個字元 a,或者一個 a 都沒有
數量詞:X*
含義:代表的是 X 出現 次數≥0
例如:比對規則為"a*",那麼需要比對的内容是多個字元 a,或者一個 a 都沒有
數量詞:X+
含義:代表的是 X 出現 次數≥1
例如:比對規則為"a+",那麼需要比對的内容是多個字元 a,或者一個 a
數量詞:X{n}
含義:代表的是 X 出現 次數= n
例如:比對規則為"a{3}",那麼需要比對的内容是 3 個字元 a
數量詞:X{n,}
含義:代表的是 X 出現 至少 n 次
例如:比對規則為"a{3, }",那麼需要比對的内容是最少有 3 個字元 a
數量詞:X{n,m}
含義:代表的是 X 出現至少 n 次,但是不超過 m 次
例如:比對規則為"a{5,8}",那麼需要比對的内容是有 5 個字元 a 到 8 個字元 a 之間
4.4邏輯運算符
邏輯運算符:XY
含義:代表的是 X 後緊跟着 Y
例如:比對規則為"ab",那麼需要比對的字元串内容就是 ”ab”
邏輯運算符:X|Y
含義:代表的是 X 或 Y
例如:比對規則為"a|b",那麼需要比對的字元串内容就是 ”a”或”b”
邏輯運算符:(X)
含義:代表的是()括号内的資料作為一個整體出現
例如:比對規則為"(hello)+",那麼需要比對的内容是組内資料要出現多次,如”hellohellohello”;
或者組内資料出現一次,如”hello”。
寫在最後
我們的Java正規表達式就結束了 歡迎大家添加部落客交流 練習過程中遇到問題也可以提供支援 如果需要學習資料 部落客也可以推薦
最後 如果覺得文章對您有幫助 請給部落客點贊、收藏、關注 部落客會不斷推出更多優質文章!