正規表示式(regular expression)描述了一種字串匹配的模式(pattern),可以用來檢查乙個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。
. - 除換行符以外的所有字元。
^ - 字串開頭。
$ - 字串結尾。
\d,\w,\s - 匹配數字、字元、空格。
\d,\w,\s - 匹配非數字、非字元、非空格。
[abc] - 匹配 a、b 或 c 中的乙個字母。
[a-z] - 匹配 a 到 z 中的乙個字母。
[^abc] - 匹配除了 a、b 或 c 中的其他字母。
aa|bb - 匹配 aa 或 bb。
? - 0 次或 1 次匹配。
* - 匹配 0 次或多次。
+ - 匹配 1 次或多次。
- 匹配 n次。
- 匹配 n次以上。
- 最少 m 次,最多 n 次匹配。
(expr) - 捕獲 expr 子模式,以 \1 使用它。
(?:expr) - 忽略捕獲的子模式。
(?=expr) - 正向預查模式 expr。
(?!expr) - 負向預查模式 expr。
校驗數字的表示式
校驗字元的表示式
網域名稱:[a-za-z0-9][-a-za-z0-9](\.[a-za-z0-9][-a-za-z0-9])+\.?interneturl:[a-za-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d$**號碼("***-******x"、"***x-******xx"、"***-******x"、"***-******xx"、"******x"和"******xx):^(\(\d-)|\d-)?\d$國內**號碼(0511-4405222、021-87888822):\d-\d|\d-\d**號碼正規表示式(支援手機號碼,3-4位區號,7-8位直播號碼,1-4位分機號):((\d)|^((\d)|(\d|\d)-(\d)|(\d|\d)-(\d)-(\d|\d|\d|\d)|(\d)-(\d|\d|\d|\d))$)身份證號(15位、18位數字),最後一位是校驗位,可能為數字或字元x:(^\d$)|(^\d$)|(^\d(\d|x|x)$)帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-za-z][a-za-z0-9_]$密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-za-z]\w$強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在 8-10 之間):^(?=.*\d)(?=.*[a-z])(?=.*[a-z])[a-za-z0-9]$強密碼(必須包含大小寫字母和數字的組合,可以使用特殊字元,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[a-z]).$日期格式:^\d-\d-\d一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$乙個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$錢的輸入格式:
pattern matcher patternsyntaxexception
replacefirst 和replaceall 區別
replacefirst 替換首次匹配,replaceall 替換所有匹配。
string word="cat";matches 和 looking at 區別string string = "cat cat cat cattie cat";
findword(string,word);
matches 要求整個序列都匹配,而lookingat 不要求。
lookingat 方法雖然不需要整句都匹配,但是需要從第乙個字元開始匹配。
string regex2 = "foo";replacefirst 和replaceall 區別string input1 = "fooooooooooooooooo";
string input2 = "ooooofoooooooooooo";
pattern pattern;
matcher matcher;
matcher matcher2;
pattern = pattern.compile(regex2);
matcher = pattern.matcher(input1);
matcher2 = pattern.matcher(input2);
system.out.println("current regex is: "+regex2);
system.out.println("current input is: "+input1);
system.out.println("current input2 is: "+input2);
system.out.println("lookingat(): "+matcher.lookingat());
system.out.println("matches(): "+matcher.matches());
system.out.println("lookingat(): "+matcher2.lookingat());
replacefirst 替換首次匹配,replaceall 替換所有匹配。
string regex = "dog";string input = "the dog says meow. " +"all dogs say meow."; string replace = "cat";
pattern p = pattern.compile(regex);
// get a matcher object
matcher m = p.matcher(input);
input = m.replaceall(replace);
system.out.println(input);
string regex = "a*b";string input = "aabfooaabfooabfoobkkk";
string replace = "-";
pattern p = pattern.compile(regex);
// 獲取 matcher 物件
matcher m = p.matcher(input);
stringbuffer sb = new stringbuffer();
while(m.find())
system.out.println(sb.tostring());
system.out.println();
string str3 = "account=? and uu =? or n=?";
system.out.println("多個分隔符返回值 :" );
for (string retval: str3.split("and|or"))
正規表示式摘要
一些特殊符號在表示式中代表抽象的特殊意義 表示式作用 與字串開始的地方匹配,不匹配任何字元 與字串結束的地方匹配,不匹配任何字元 b 匹配乙個單詞邊界,也就是單詞和空格之間的位置,不匹配任何字元 舉 例1 表示式 aaa 在匹配 aaa 時,匹配結果是 失敗。因為 要求與字串開始的地方匹配,因此,只...
正規表示式摘要
1 貪婪模式 根據匹配字串以及表示式盡可能多的進行匹配,成為貪婪匹配模式 例如 a d 即可以匹配首字母為a的之後的許多數字,這個不進行限制 或者另外一種方法 a d 也可以實現同樣的方法 2 非貪婪模式 根據匹配字串以及表示式盡可能少的進行匹配。使用的方法就是在修飾匹配次數的特殊符號後再加上乙個?...
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...