java正則表達式
packagecom.cxtt.test;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTestZhengze{
publicstaticvoidmain(String[]args){
//完全匹配”^[1-9][0-9]{4,}$”
//部分匹配”[1-9][0-9]{4,}”
if(matcherRegularExpression(“^[1-9][0-9]{4,}$”,”910618858a”)){
System.out.println(“輸入正確”);
}else{
System.out.println(“輸入錯誤”);
}
}
//匹配正則表達式方法
publicstaticbooleanmatcherRegularExpression(StringregEx,Stringstr){
Patternpattern=Pattern.compile(regEx);
Matchermatcher=pattern.matcher(str);
booleanfound=false;
while(matcher.find()){
//System.out.println(“發現\””+matcher.group()+”\”開始于”
//+matcher.start()+”結束于”+matcher.end());
found=true;
}
returnfound;
}
}

java正則表達式精確匹配
第一次接觸到正則表達式是在書上,剛開端感覺這也許就僅僅界說了一下,沒什么用,就沒怎么多看。知道后來做項目的時分才發現,這東西,是非常便利好用的一個辦法。
正則表達式是干什么的呢?
正則表達式:契合一定規則的表達式
作用:用于專門操作字符串
好處:能夠簡化對字符串的雜亂操作
下面舉一個詳細的實例:
需求:校驗qq號碼。要求qq號只能5至13位,只能是數字,第一個數字不能以0開頭
或許很多人看到這個,很簡單啊,然后開端瘋狂寫代碼。
咱們來看看正常思路
publicbooleancheckQQ(Stringqq){
booleanflag=true;
intlen=qq.length();
if(len<5||len>15){
flag=false;
}
//startWith()是String的一個辦法,回來boolean類型if(qq.startsWith(“0″)){
flag=false;
}
char[]arr=qq.toCharArray();
for(inti=0;i
if(!(i>=’0’&&i
flag=false;
break;
}
}
returnflag;
}
//其間查驗滿是有數字構成有這樣的辦法。try{
longl=Long.parseLong(qq);//假如呈現數字之外的會拋出異常}catch(NumberFormatExceptione){
flag=false;
}
下面看一看假如使用正則表達式來判別
publicbooleancheckQQ(Stringqq){
Stringregex=”[1-9][0-9]{4-14}”;
returnqq.matches(regex);
}
能夠很明顯的看出差距。
這還是比較簡單的校驗規則,假如再雜亂一點的話愈加能夠體現出正則表達式的便利之處
下面來詳細講一講正則表達式:
1.匹配:Stringmatches辦法
調用String中的matches()辦法,回來的是一個boolean類型的值
JAVA中界說了很多種匹配格局,能夠在API文檔中查詢
我這兒書寫幾種常見的:字符類[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](減去)
//這兒[abc]只寫了3個,寫個個數是自己定的,比方也能夠[adoenvj]等等。
//也能夠寫[1]表示只能為1,并且[]括號能夠省掉掉。
需求:兩個字符第一個是字母第二個是數字
Stringregex=”[a-zA-Z][0-9]”;
意味著只能有兩個字符a至z,A至Z,0至9.
需求:第一個字母只能是abc傍邊的一個
Stringregex=”[abc]”;
需求:第一個字母不能是abc傍邊的一個
Stringregex=”[^abc]”;//加了一個符號^
需求:第一個字母是b至k的
Stringregex=”[b-k]”;
預界說字符類:
預界說字符類:.
任何字符(與行結束符或許匹配也或許不匹配)\d
數字:[0-9]\D
非數字:[^0-9]\s
空白字符:[\t\n\x0B\f\r]\S
非空白字符:[^\s]\w
單詞字符:[a-zA-Z_0-9]\W非單詞字符:[^\w]
那咱們該怎么書寫呢?
比方第一個字符要求是數字
Stringregex=”\\d”;//注意要有寫成\\d,不能寫成\d因為\后面的會被視作轉義字符
\w該什么時分用呢?能夠看到它的作用是該字符是數字或字母或下劃線
這不正是注冊郵箱時的要求嗎,直接寫個\w,多省事
Greedy數量詞X?
X,一次或一次也沒有X*
X,零次或屢次X+
X,一次或屢次X{n}
X,剛好n次X{n,}
X,至少n次X{n,m}
X,至少n次,但是不超過m次
這個怎么使用呢,這是是判別前一個字符的呈現次數
例如:要求滿是數字,6至9位。
Stringregex=”\\d{6,9}”;即可
其實正則中的數量詞有Greedy(貪婪)、Reluctant(懶散)和Possessive(侵占)三種。
Greedy(貪婪)數量詞使用的頻率高一點。
這兒就不做過多說明。