正則表達式語法與使用

正則表達式(Regular Expressiqn)

正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。
則表達式通常被用來檢索、替換那些符合某個模式的文本

java.util.regex包中提供以下兩個類對正則表達式的支持:
Matcher類
通過解釋Pattern對character sequence執行匹配操作的引擎。
Pattern類
正則表達式的編譯表示形式。

public final class Pattern extends Objectimplements Serializable
正則表達式的編譯表示形式。指定爲字符串的正則表達式必須首先被編譯爲此類的實例。
典型的調用順序是

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaab");
boolean b = m.matches();

public final class Matcher extends Object implements MatchResult
Matcher類的主要功能是用於進行正則的匹配,通過Pattern類中定義完的正則,再使用
Matcher類進行驗證或者替換。

常用方法:
boolean matches()
嘗試將整個區域與模式匹配。

String replaceAll(String replacement)
替換模式與給定替換字符串相匹配的輸入序列的每個子序列。

String replaceFirst(String replacement)
替換模式與給定替換字符串匹配的輸入序列的第一個子序列

在JDK1.4之後加入了正則,隨後又更新了String的操作類,因爲在使用正則中,所有的內容通過字符串表示的比較多。在String類中有以下的方法可以完成對正則的支持:
boolean matches(String regex)
告知此字符串是否匹配給定的正則表達式。

String replaceAll(String regex, String replacement)
使用給定的replacement替換此字符串
所有匹配給定的正則表達式的子字符串。

String replaceFirst(String regex, String replacement)
使用給定的replacement替換此字符串
匹配給定的正則表達式的第一個子字符串。

String[] split(String regex)
根據給定正則表達式的匹配拆分此字符串。

常用的正則字符:

預定義字符類
. 任何字符(與行結束符可能匹配也可能不匹配)
\d 數字:[0-9]
\D 非數字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 單詞字符:[a-zA-Z_0-9]
\W 非單詞字符:[^\w]

字符類
[abc] a、b 或 c(簡單類)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,兩頭的字母包括在內(範圍)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](減去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](減去)

邊界匹配器
^ 行的開頭
$ 行的結尾
\b 單詞邊界
\B 非單詞邊界
\A 輸入的開頭
\G 上一個匹配的結尾
\Z 輸入的結尾,僅用於最後的結束符(如果有的話)
\z 輸入的結尾

代碼示例:
1、驗證電話號碼(如: 010-38389438 )
2、驗證手機號碼
3、驗證用戶名,只能是字母開頭的數字、字母或下劃線的組合
4、驗證IP地址(如: 192.168.1.1)
5、驗證年齡(100以內)
6、驗證金額(可以有小數位)

package com.booy;

public class RegexDemo {
    public static void main(String[] args) {
        //驗證電話號碼
        String phoneNumber = "662-6589905";
        boolean p = phoneNumber.matches("\\d{3,4}-\\d{7,8}");
        System.out.println(p);
        //驗證手機號碼
        String phone = "17602800280";
        boolean p1 = phone.matches("1[3-9]\\d{9}");
        System.out.println(p1);
        //驗證用戶名,只能是字母開頭的數字、字母或下劃線的組合,最少6位,最多15位
        String user = "e88_ddf";
        boolean p2 = user.matches("[a-zA-Z]\\w{5,14}");
        System.out.println(p2);
        //驗證IP地址(如: 192.168.1.1)
        String ip = "192.168.1.1";
        boolean p3 = ip.matches("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}");
        System.out.println(p3);
        //驗證年齡
        String age = "35";
        boolean p4 = age.matches("\\d{1,3}");
        System.out.println(p4);
        //驗證金額(可以有小數位)
        String m = "35.88";
        boolean p5 = m.matches("\\d+.\\d+");
        System.out.println(p5);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章