1. 程式人生 > >Java簡單正則表示式實現

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_]’

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