正規表示式

2021-06-22 09:56:54 字數 3199 閱讀 9234

說明

文字格式: /pattern/flags 

正規表示式建構函式: new regexp("pattern"[,"flags"]); 

引數說明: 

pattern -- 乙個正規表示式文字 

flags -- 如果存在,將是以下值: 

g: 全域性匹配 

i: 忽略大小寫 

gi: 以上組合 

[注意] 文字格式的引數不用引號,而在用建構函式時的引數需要引號。如:/ab+c/i new regexp("ab+c","i")是實現一樣的功能。在建構函式中,一些特殊字元需要進行轉意(在特殊字元前加"/")。如:re = new regexp("//w+")

正規表示式中的特殊字元

字元 含意 

/ 做為轉意,即通常在"/"後面的字元不按原來意**釋,如/b/匹配字元"b",當b前面加了反斜桿後//b/,轉意為匹配乙個單詞的邊界。 

-或- 

對正規表示式功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了"/"後,/a/*/將只匹配"a*"。

^ 匹配乙個輸入或一行的開頭,/^a/匹配"an a",而不匹配"an a" 

$ 匹配乙個輸入或一行的結尾,/a$/匹配"an a",而不匹配"an a" 

* 匹配前面元字元0次或多次,/ba*/將匹配b,ba,baa,baaa 

+ 匹配前面元字元1次或多次,/ba*/將匹配ba,baa,baaa 

? 匹配前面元字元0次或1次,/ba*/將匹配b,ba 

(x) 匹配x儲存x在名為$1...$9的變數中 

x|y 匹配x或y 

精確匹配n次 

匹配n次以上 

匹配n-m次 

[xyz] 字符集(character set),匹配這個集合中的任一乙個字元(或元字元) 

[^xyz] 不匹配這個集合中的任何乙個字元 

[/b] 匹配乙個退格符 

/b 匹配乙個單詞的邊界 

/b 匹配乙個單詞的非邊界 

/cx 這兒,x是乙個控制符,//cm/匹配ctrl-m 

/d 匹配乙個字數字元,//d/ = /[0-9]/ 

/d 匹配乙個非字數字元,//d/ = /[^0-9]/ 

/n 匹配乙個換行符 

/r 匹配乙個回車符 

/s 匹配乙個空白字元,包括/n,/r,/f,/t,/v等 

/s 匹配乙個非空白字元,等於/[^/n/f/r/t/v]/ 

/t 匹配乙個製表符 

/v 匹配乙個重直製表符 

/w 匹配乙個可以組成單詞的字元(alphanumeric,這是我的意譯,含數字),包括下劃線,如[/w]匹配"$5.98"中的5,等於[a-za-z0-9] 

/w 匹配乙個不可以組成單詞的字元,如[/w]匹配"$5.98"中的$,等於[^a-za-z0-9]。 附:

perl中 s/[^[:alnum:]]//g   s的意思是替換

---------------------------------------------

常用正規表示式

"^/d+$"  //非負整數(正整數 + 0) "^[0-9]*[1-9][0-9]*$"  //正整數

"^((-/d+)|(0+))$"  //非正整數(負整數 + 0)

"^-[0-9]*[1-9][0-9]*$"  //負整數

"^-?/d+$"    //整數

"^/d+(/./d+)?$"  //非負浮點數(正浮點數 + 0)

"^(([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+)?))$"  //非正浮點數(負浮點數 + 0)

"^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //負浮點數

"^(-?/d+)(/./d+)?$"  //浮點數

"^[a-za-z]+$"  //由26個英文本母組成的字串

"^[a-z]+$"  //由26個英文本母的大寫組成的字串

"^[a-z]+$"  //由26個英文本母的小寫組成的字串

"^[a-za-z0-9]+$"  //由數字和26個英文本母組成的字串

"^/w+$"  //由數字、26個英文本母或者下劃線組成的字串

"^[/w-]+(/.[/w-]+)*@[/w-]+(/.[/w-]+)+$"    //email位址

"^[a-za-z]+://(/w+(-/w+)*)(/.(/w+(-/w+)*))*(/?/s*)?$"  //url 

使用範例

1.替換

string targeturl = "/dir/regex.html&tt=wer";

targeturl = new regex("^/dir/(.+).html&(.+)", regexoptions.ignorecase).replace(targeturl, "/dir.aspx?id=$1&$2", 1);  

//targeturl  = "/dir.aspx?id=regex&tt=wer"

//$0 == "/dir/regex.html&tt=wer";

2.匹配其中match的group0是整個匹配字串:

group0='one car'

capture0='one car', position=2

另外一種匹配用法是使用regex.maches,大體跟上面相同,變化如下

matchcollection m = r.matches(text);

for (int idx=0; idxcode...

m = m.nextmatch();}}

result...3. 刪除html元素  public static string striphtmlxmltags (string content) ...4. 刪除多餘空格(僅空格)

searchterms = regex.replace(searchterms, " ", " ", regexoptions.ignorecase | regexoptions.compiled | regexoptions.multiline);

5. trim

string.prototype.trim = function () {

正規表示式 正規表示式 總結

非負整數 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...

正規表示式 表示式

網域名稱 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 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...