正則表達式

 

字符

說明

/

將下一字符標記爲特殊字符、文本、反向引用或八進制轉義符。例如,“n”匹配字符“n”。“/n”匹配換行符。序列“//”匹配“/”,“/(”匹配“(”。

^

匹配輸入字符串開始的位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 還會與“/n”或“/r”之後的位置匹配。

$

匹配輸入字符串結尾的位置。如果設置了 RegExp 對象的 Multiline 屬性,$ 還會與“/n”或“/r”之前的位置匹配。

*

零次或多次匹配前面的字符或子表達式。例如,zo* 匹配“z”和“zoo”。* 等效於 {0,}

+

一次或多次匹配前面的字符或子表達式。例如,“zo+”與“zo”和“zoo”匹配,但與“z”不匹配。+ 等效於 {1,}

?

零次或一次匹配前面的字符或子表達式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效於 {0,1}

{n}

n 是非負整數。正好匹配 n 次。例如,“o{2}”與“Bob”中的“o”不匹配,但與“food”中的兩個“o”匹配。

{n,}

n 是非負整數。至少匹配 n 次。例如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的所有 o。“o{1,}”等效於“o+”。“o{0,}”等效於“o*”。

{n,m}

M n 是非負整數,其中 n <= m。匹配至少 n 次,至多 m 次。例如,“o{1,3}”匹配“fooooood”中的頭三個 o'o{0,1}' 等效於 'o?'。注意:您不能將空格插入逗號和數字之間。

?

當此字符緊隨任何其他限定符(*+?{n}{n,}{n,m})之後時,匹配模式是“非貪心的”。“非貪心的”模式匹配搜索到的、儘可能短的字符串,而默認的“貪心的”模式匹配搜索到的、儘可能長的字符串。例如,在字符串“oooo”中,“o+?”只匹配單個“o”,而“o+”匹配所有“o”。

.

匹配除“/n”之外的任何單個字符。若要匹配包括“/n”在內的任意字符,請使用諸如“[/s/S]”之類的模式。

(pattern)

匹配 pattern 並捕獲該匹配的子表達式。可以使用 $0$9 屬性從結果“匹配”集合中檢索捕獲的匹配。若要匹配括號字符 ( ),請使用“/(”或者“/)”。

(?:pattern)

匹配 pattern 但不捕獲該匹配的子表達式,即它是一個非捕獲匹配,不存儲供以後使用的匹配。這對於用“or”字符 (|) 組合模式部件的情況很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更經濟的表達式。

(?=pattern)

執行正向預測先行搜索的子表達式,該表達式匹配處於匹配 pattern 的字符串的起始點的字符串。它是一個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配“Windows 2000”中的“Windows”,但不匹配“Windows 3.1”中的“Windows”。預測先行不佔用字符,即發生匹配後,下一匹配的搜索緊隨上一匹配之後,而不是在組成預測先行的字符後。

(?!pattern)

執行反向預測先行搜索的子表達式,該表達式匹配不處於匹配 pattern 的字符串的起始點的搜索字符串。它是一個非捕獲匹配,即不能捕獲供以後使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配“Windows 3.1”中的 “Windows”,但不匹配“Windows 2000”中的“Windows”。預測先行不佔用字符,即發生匹配後,下一匹配的搜索緊隨上一匹配之後,而不是在組成預測先行的字符後。

x|y

匹配 x y。例如,'z|food' 匹配“z”或“food”。'(z|f)ood' 匹配“zood”或“food”。

[xyz]

字符集。匹配包含的任一字符。例如,“[abc]”匹配“plain”中的“a”。

[^xyz]

反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹配“plain”中的“p”。

[a-z]

字符範圍。匹配指定範圍內的任何字符。例如,“[a-z]”匹配“a”到“z”範圍內的任何小寫字母。

[^a-z]

反向範圍字符。匹配不在指定的範圍內的任何字符。例如,“[^a-z]”匹配任何不在“a”到“z”範圍內的任何字符。

/b

匹配一個字邊界,即字與空格間的位置。例如,“er/b”匹配“never”中的“er”,但不匹配“verb”中的“er”。

/B

非字邊界匹配。“er/B”匹配“verb”中的“er”,但不匹配“never”中的“er”。

/cx

匹配 x 指示的控制字符。例如,/cM 匹配 Control-M 或回車符。x 的值必須在 A-Z a-z 之間。如果不是這樣,則假定 c 就是“c”字符本身。

/d

數字字符匹配。等效於 [0-9]

/D

非數字字符匹配。等效於 [^0-9]

/f

換頁符匹配。等效於 /x0c /cL

/n

換行符匹配。等效於 /x0a /cJ

/r

匹配一個回車符。等效於 /x0d /cM

/s

匹配任何空白字符,包括空格、製表符、換頁符等。與 [ /f/n/r/t/v] 等效。

/S

匹配任何非空白字符。與 [^ /f/n/r/t/v] 等效。

/t

製表符匹配。與 /x09 /cI 等效。

/v

垂直製表符匹配。與 /x0b /cK 等效。

/w

匹配任何字類字符,包括下劃線。與“[A-Za-z0-9_]”等效。

/W

與任何非單詞字符匹配。與“[^A-Za-z0-9_]”等效。

/xn

匹配 n,此處的 n 是一個十六進制轉義碼。十六進制轉義碼必須正好是兩位數長。例如,“/x41”匹配“A”。“/x041”與“/x04&1”等效。允許在正則表達式中使用 ASCII 代碼。

/num

匹配 num,此處的 num 是一個正整數。到捕獲匹配的反向引用。例如,“(.)/1”匹配兩個連續的相同字符。

/n

標識一個八進制轉義碼或反向引用。如果 /n 前面至少有 n 個捕獲子表達式,那麼 n 是反向引用。否則,如果 n 是八進制數 (0-7),那麼 n 是八進制轉義碼。

/nm

標識一個八進制轉義碼或反向引用。如果 /nm 前面至少有 nm 個捕獲子表達式,那麼 nm 是反向引用。如果 /nm 前面至少有 n 個捕獲,則 n 是反向引用,後面跟有字符 m。如果兩種前面的情況都不存在,則 /nm 匹配八進制值 nm,其中 n m 是八進制數字 (0-7)

/nml

n 是八進制數 (0-3)m l 是八進制數 (0-7) 時,匹配八進制轉義碼 nml

/un

匹配 n,其中 n 是以四位十六進制數表示的 Unicode 字符。例如,/u00A9 匹配版權符號 (©)

 

 

二.       優先級順序

 

下表從最高到最低說明了各種正則表達式運算符的優先級順序:

運算符

說明

/

轉義符

(), (?:), (?=), []

括號和中括號

*, +, ?, {n}, {n,}, {n,m}

限定符

^, $, /任何元字符、任何字符

定位點和序列

|

替換

字符具有高於替換運算符的優先級,使得“m|food”匹配“m”或“food”。若要匹配“mood”或“food”,請使用括號創建子表達式,從而產生“(m|f)ood”。

 

三.       Jscript中的特殊字符

許多元字符要求在試圖匹配它們時特別對待。若要匹配這些特殊字符,必須首先使字符“轉義”,即,將反斜槓字符 (/) 放在它們前面。下表列出了特殊字符以及它們的含義:

 

特殊字符

註釋

$

匹配輸入字符串結尾的位置。如果設置了 RegExp 對象的 Multiline 屬性,那麼 $ 還匹配 /n /r 前面的位置。若要匹配 $ 字符本身,請使用 /$

( )

標記子表達式的開始和結束。可以捕獲子表達式以供以後使用。若要匹配這兩個字符,請使用 /( /)

*

零次或多次匹配前面的字符或子表達式。若要匹配 * 字符,請使用 /*

+

一次或多次匹配前面的字符或子表達式。若要匹配 + 字符,請使用 /+

.

匹配除換行符 /n 之外的任何單個字符。若要匹配 .,請使用 /

[ ]

標記中括號表達式的開始。若要匹配這些字符,請使用 /[ /]

?

零次或一次匹配前面的字符或子表達式,或指示“非貪心”限定符。若要匹配 ? 字符,請使用 /?

/

將下一字符標記爲特殊字符、文本、反向引用或八進制轉義符。例如,字符 n 匹配字符 n/n 匹配換行符。序列 // 匹配 /,序列 /( 匹配 (

/

表示文本正則表達式的開始或結束。若要匹配 / 字符,請使用 //

^

匹配輸入字符串開始處的位置,但在中括號表達式中使用的情況除外,在那種情況下它對字符集求反。若要匹配 ^ 字符本身,請使用 /^

{ }

標記限定符表達式的開始。若要匹配這些字符,請使用 /{ /}

|

指出在兩個項之間進行選擇。要匹配 |,請使用 /|

 

四.       示例

 

^([a-zA-Z0-9_/-/.]+)@([a-zA-Z0-9_/-/.]+)$  郵件(簡單控制 XXX@XXX)

^/d{1,12}(/./d{1,4})?$   number(16,4) 12位實數保留4位小數

^[+-]?((//d{1,2})(//.//d{1,6})|(//d{1,2})|(100))$  大於等於-100小於等於100的實數  用於加減碼

^((/d{1,2})(/./d{1,6})|(/d{1,2})|(100))$   大於等於0小於等於100的實數  利率

^((/d{1,2})(/./d{1,})|([1-9]/d{0,1})|(100))$ 大於0小於等於100的實數

^/d*$ ^/d+$ 正整數

^/d*$|-  電話號碼
^/d*$  郵政編碼
^[0-9A-Za-z]*$ 傳真號碼

[y|Y]{4}[-|/][m|M]{2}[-|/][d|D]{2}|[m|M]{2}[-|/][d|D]{2}[-|/][y|Y]{4}
日期顯示格式:分隔符號可以是’-’或者’/’,YYYY表示年,MM表示月,DD表示日
西曆(中文):年月日;西曆(英文):年月日/月日年


  ^//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

發佈了45 篇原創文章 · 獲贊 6 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章