天天看點

Java簡單正規表達式實作

前言:由于工作中涉及對正則的使用,是以簡單的整理一下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_]’

這裡例舉幾個常用的元字元,詳情可看菜鳥教程