正則表達式概述
正則表達式是專門解決字符串規(guī)則匹配的工具李请。
正則表達式也是一個字符串瞧筛,用來定義匹配規(guī)則。
參照幫助文檔导盅,在Pattern類中有簡單的規(guī)則定義较幌,可以結(jié)合字符串類的方法使用。
正則表達式匹配規(guī)則
參照幫助文檔白翻,在Pattern類中有正則表達式的的規(guī)則定義乍炉,正則表達式中明確區(qū)分大小寫字母。我們來學(xué)習(xí)語法規(guī)則滤馍。
正則表達式的語法規(guī)則:
字符:x
含義:代表的是字符x
例如:匹配規(guī)則為 "a"岛琼,那么需要匹配的字符串內(nèi)容就是 ”a”
字符:\
含義:代表的是反斜線字符''
例如:匹配規(guī)則為"\" ,那么需要匹配的字符串內(nèi)容就是 ”\”
字符類:[abc]
含義:代表的是字符a巢株、b 或 c
例如:匹配規(guī)則為"[abc]" 槐瑞,那么需要匹配的內(nèi)容就是字符a,或者字符b阁苞,或字符c的一個
字符類:[^abc]
含義:代表的是除了 a困檩、b 或 c以外的任何字符
例如:匹配規(guī)則為"[^abc]"祠挫,那么需要匹配的內(nèi)容就是不是字符a,或者不是字符b悼沿,或不是字符c的任意一個字符
字符類:[a-zA-Z]
含義:代表的是a 到 z 或 A 到 Z等舔,兩頭的字母包括在內(nèi)
例如:匹配規(guī)則為"[a-zA-Z]",那么需要匹配的是一個大寫或者小寫字母
字符類:[0-9]
含義:代表的是 0到9數(shù)字糟趾,兩頭的數(shù)字包括在內(nèi)
例如:匹配規(guī)則為"[0-9]"慌植,那么需要匹配的是一個數(shù)字
字符類:[a-zA-Z_0-9]
含義:代表的字母或者數(shù)字或者下劃線(即單詞字符)
例如:匹配規(guī)則為" [a-zA-Z_0-9] ",那么需要匹配的是一個字母或者是一個數(shù)字或一個下滑線
預(yù)定義字符類:.
含義:代表的是任何字符
例如:匹配規(guī)則為" . "义郑,那么需要匹配的是一個任意字符涤浇。如果,就想使用 . 的話魔慷,使用匹配規(guī)則"\."來實現(xiàn)
預(yù)定義字符類:\d [0-9]
含義:代表的是 0到9數(shù)字只锭,兩頭的數(shù)字包括在內(nèi),相當于[0-9]
例如:匹配規(guī)則為"\d "院尔,那么需要匹配的是一個數(shù)字
預(yù)定義字符類:\w [a-zA-Z_0-9]
含義:代表的字母或者數(shù)字或者下劃線(即單詞字符)蜻展,相當于[a-zA-Z_0-9]
例如:匹配規(guī)則為"\w ",邀摆,那么需要匹配的是一個字母或者是一個數(shù)字或一個下滑線
數(shù)量詞:X?
含義:代表的是X出現(xiàn)一次或一次也沒有
例如:匹配規(guī)則為"a?"纵顾,那么需要匹配的內(nèi)容是一個字符a,或者一個a都沒有
數(shù)量詞:X*
含義:代表的是X出現(xiàn)零次或多次
例如:匹配規(guī)則為"a*" 栋盹,那么需要匹配的內(nèi)容是多個字符a施逾,或者一個a都沒有
數(shù)量詞:X+
含義:代表的是X出現(xiàn)一次或多次
例如:匹配規(guī)則為"a+",那么需要匹配的內(nèi)容是多個字符a例获,或者一個a
數(shù)量詞:X{n}
含義:代表的是X出現(xiàn)恰好 n 次
例如:匹配規(guī)則為"a{5}"汉额,那么需要匹配的內(nèi)容是5個字符a
數(shù)量詞:X{n,}
含義:代表的是X出現(xiàn)至少 n 次
例如:匹配規(guī)則為"a{5, }",那么需要匹配的內(nèi)容是最少有5個字符a
數(shù)量詞:X{n,m}
含義:代表的是X出現(xiàn)至少 n 次榨汤,但是不超過 m 次
例如:匹配規(guī)則為"a{5,8}"蠕搜,那么需要匹配的內(nèi)容是有5個字符a 到 8個字符a之間
package com.itheima_07;
/*
* 校驗QQ號碼
* 要求必須是5-15位
* 0不能開頭
* 必須都是數(shù)字
*
* 正則表達式:(與java語言無關(guān))就是一套規(guī)則,可以用于匹配字符串
*
* boolean matches(String regex) : 判斷當前字符串是否匹配指定的正則表達式收壕,如果匹配則返回true否則返回false
*
*
*/
public class RegexDemo {
public static void main(String[] args) {
String qq = "12345";
/*boolean flag = checkQQ(qq);
System.out.println(flag);*/
boolean flag = qq.matches("[1-9][0-9]{4,14}");//正則表達式
System.out.println(flag);
}
public static boolean checkQQ(String qq) {
int length = qq.length();
//要求必須是5-15位
if(length < 5 || length > 15) {
return false;
}
//0不能開頭
if(qq.startsWith("0")) {
return false;
}
//必須都是數(shù)字
for(int i = 0; i < qq.length(); i++) {
//得到參數(shù)的每個字符
char c = qq.charAt(i);
if(c < '0' || c > '9') {
return false;
}
}
return true;//符合要求
}
}
```0