摘要 正規表示式

2021-10-14 04:49:20 字數 4171 閱讀 1032

正規表示式(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";

string string = "cat cat cat cattie cat";

findword(string,word);

matches  和 looking at 區別

matches 要求整個序列都匹配,而lookingat 不要求。

lookingat 方法雖然不需要整句都匹配,但是需要從第乙個字元開始匹配。

string regex2 = "foo";               

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 區別

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...