正規表示式

2021-09-03 01:38:13 字數 3121 閱讀 2493

一、正規表示式簡介

能幹什麼?

二、語法

字 符  

描述\cx

匹配由x指明的控制字元。例如, \cm 匹配乙個 control-m 或回車符。x 的值必須為 a-z 或 a-z 之一。否則,將 c 視為乙個原義的 『c』 字元

\f匹配乙個換頁符號

\n匹配乙個換行符

\r匹配乙個回車符

\s匹配乙個空白字元,包括空格、製表符

\s匹配任何非空白字元

\t匹配乙個製表符

\v匹配乙個垂直製表符

特殊字元 描述$

匹配輸入字串的結尾位置。如果設定了regexp物件的multuline屬性,則$也匹配\n或\r

()標記乙個子表示的開始和結束位置。子表示可以獲取供以後使用

*匹配前面的子表示式0次或者多次

+匹配前面的子表示式1次或者多次

.匹配除換行符\n 之外的任何單字元

[標記乙個中括號表示式的開始

?匹配前面的子表示式0次或者1,或指明乙個非貪婪限定符

\將下乙個字元標記為特殊字元、或原意字元、或八進位制轉義符。例如, 『n』 匹配字元 『n』。』\n』 匹配換行符。序列 『\』 匹配 「」,而 『(』 則匹配 「(」。

^匹配輸入字串的開始位置。除非在中使用,此時它表示不接受該字元集合。

+匹配前面的子表示式1次或多次。如,「zo+「能匹配"zo"以及"zoo」,不能匹配"z」, 等價於

?匹配前面的子表示式0次或一次。如,"do(es)?「可以匹配"do」、「does」、「doxy」, 等價於

n 是非負整數。匹配確定的n次。如,"0「不能匹配"bob"中的』o』, 能匹配"food"中的兩個"o」

n是非負整數。至少匹配n 次。『o』 等價於 『o+』。『o』 則等價於 『o*』。

m 和 n均為非負整數, 且n<=m。最少匹配n次最多匹配m次。"o「等價於"o?」。注意在逗號和兩個數之間不能有空格

注意: *、+限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上乙個?就可以實現非貪婪或最小匹配。

非貪婪模式:

補充:通過在 *、+ 或 ? 限定符之後放置 ?,該表示式從"貪心"表示式轉換為"非貪心"表示式或者最小匹配。

字元描述^

匹配輸入字串開始的位置。如果regexp設定了multiline屬性,^ 還會與』\n』,』\r』之後的位置匹配

$匹配輸入字串結尾的位置。如果regexp設定了multiline屬性,$還會與』\n』,』\r』之前的位置匹配

\b匹配乙個單詞的邊界,即字與空格之間的位置。如,』/\bcha/'匹配chapter 的開頭三個字元,因為這三個字元出現在單詞邊界後面

\b非單詞邊界匹配。如,』/\bapt/'匹配chapter 中的字串 apt,但不匹配 aptitude 中的字串 apt

注意: 不能將限定符與定位符一起使用。由於在緊靠換行或者單詞邊界的前面或後面不能有乙個以上位置,因此不允許諸如 ^* 之類的表示式

補充:

其中?:是非捕獲員之一,還有兩個非捕獲元是?=?!

?=表示正向預查,在任何開始匹配圓括號內的正規表示式模式的位置來匹配搜尋字串

?! 表示負向預查,在任何開始不匹配正規表示式模式的位置來匹配搜尋字串

例子一: 

// 查詢重複的單詞

var str =

"is is the cost of of gasoline going up up"

;var patt1 =

/\b([a-z]+) \1\b/ig

;document.

write

(str.

match

(patt1));

// 結果:is is,of of,up up

解釋:

[a-z]+ 匹配乙個或多個字母。

正規表示式的第二部分是對以前捕獲的子匹配項的引用,即,單詞的第二個匹配項正好由括號表示式匹配。

\1 指定第乙個子匹配項。

單詞邊界元字元確保只檢測整個單詞。否則,諸如 「is issued」 或 「this is」 之類的片語將不能正確地被此表示式識別。

正規表示式後面的全域性標記 g 指定將該表示式應用到輸入字串中能夠查詢到的盡可能多的匹配。

表示式的結尾處的不區分大小寫 i 標記指定不區分大小寫。

多行標記指定換行符的兩邊可能出現潛在的匹配。

例子二:

// 將通用資源指示符 (uri) 分解為其元件。假定您想將下面的 uri 分解為協議(ftp、http 等等)、域位址和頁/路徑

var str =

"";var patt1 =

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/

;arr = str.

match

(patt1)

;for

(var i =

0; i < arr.length ; i++

)// 結果 :

/html/html-tutorial.html

解釋:

str.match(patt1) 返回乙個陣列,例項中的陣列包含 5 個元素,索引 0 對應的是整個字串,索引 1 對應第乙個匹配符(括號內),以此類推。

第乙個括號子表示式捕獲 web 位址的協議部分。該子表示式匹配在冒號和兩個正斜槓前面的任何單詞。

第二個括號子表示式捕獲位址的域位址部分。子表示式匹配 : 和 / 之後的乙個或多個字元。

第三個括號子表示式捕獲埠號(如果指定了的話)。該子表示式匹配冒號後面的零個或多個數字。只能重複一次該子表示式。

第四個括號子表示式捕獲 web 位址指定的路徑和 / 或頁資訊。該子表示式能匹配不包括 # 或空格字元的任何字串行。

參考:正規表示式 – 教程 | 菜鳥教程

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

非負整數 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正規表示式 編寫正規表示式

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