一、正規表示式簡介
能幹什麼?
二、語法
字 符
描述\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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...