前言:由于工作中涉及對正則的使用,是以簡單的整理一下Java中正則的使用,做一個自我檢讨和筆記整理。
-
Java中校驗某個字元串是否滿足某個規則,可以簡單到直接使用String類的matches方法。
例如:
// 校驗手機号碼有效性
String regex = "^1[3|5|7|8|9]\\d{9}$";
String param = "17751033130";
boolean result = param.matches(regex);
當然啦,在使用前,最好對參數進行判空校驗,防止出現空指針錯誤。
- 也可以使用java.util.regex包中的Pattern類和Matcher類:
Pattern pattern = Pattern.compile("^1[3|5|7|8|9]\\\\d{9}");
Matcher matcher = pattern.matcher("17751033130");
boolean result = matcher.matches();
具體使用可以參照Java API 文檔
正規表達式規則:
字元 | 描述 |
---|---|
\ | 将下一個字元标記為一個特殊字元、或一個原義字元、或一個 向後引用、或一個八進制轉義符 |
^ | 比對輸入字元串的開始位置 |
$ | 比對輸入字元串的結束位置 |
* | 比對前面的子表達式零次或多次,* 等價于{0,} |
+ | 比對前面的子表達式一次或多次,+ 等價于 {1,}。 |
? | 比對前面的子表達式零次或一次 ,? 等價于 {0,1}。 |
{n} | n 是一個非負整數,比對确定的 n 次 |
{n,} | n 是一個非負整數,至少比對n 次 |
{n,m} | m 和 n 均為非負整數,其中n <= m。最少比對 n 次且最多比對 m 次 |
? | 當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,比對模式是非貪婪的 |
x|y | 比對 x 或 y |
[xyz] | 字元集合,比對所包含的任意一個字元 |
[^xyz] | 負值字元集合,比對未包含的任意字元 |
[a-z] | 字元範圍,比對指定範圍内的任意字元 |
[^a-z] | 負值字元範圍,比對任何不在指定範圍内的任意字元 |
\b | 比對一個單詞邊界,也就是指單詞和空格間的位置 |
\d | 比對一個數字字元,等價于 [0-9] |
\D | 比對一個非數字字元,等價于 [^0-9] |
\w | 比對字母、數字、下劃線,等價于’[A-Za-z0-9_]’ |
\W | 比對非字母、數字、下劃線,等價于 ‘[^A-Za-z0-9_]’ |
這裡例舉幾個常用的元字元,詳情可看菜鳥教程