Java簡單正則表示式實現
阿新 • • 發佈:2018-11-24
前言:由於工作中涉及對正則的使用,所以簡單的整理一下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_]’ |
這裡例舉幾個常用的元字元,詳情可看菜鳥教程