正規表示式

2022-09-12 10:06:21 字數 2594 閱讀 4559

正規表示式 2017-5-11

語法:+ 號 代表前面的字串可以至少出現一次 例如:kin+mos 可以匹配出 kinkinkink+mos

* 號 代表前面的字串可以不出現或出現n次 例如:kin*mos 可以匹配出 kinkinkinmos

? 號 代表前面的字元最多只能出現一次 例如:kin?mos 可以匹配出 kinmos

非列印字元

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

\f 號 匹配乙個換頁符 等價於 \x0c 和 \cl

\n 號 匹配乙個換行符 等價於 \x0a 和 \cj

\r 號 匹配乙個回車符 等價於 \x0d 和 \xm

\s 號 匹配任何空白字元 包括空格 製表符 換頁符等 等價於 [ \f\n\r\t\v]

\s 號 匹配任何非空白字元 等價於 [^ \f\n\r\t\v]

\t 號 匹配乙個製表符 等價於 \x09 和 \cl

\v 號 匹配乙個垂直製表符 等價於 \x0b 和 \ck

特殊字元

特殊字元 比如 上面說的 + 號這種,如果需要找到 字串中的 +號,需要 用\ 轉義 \+

$ 匹配輸入字串的結尾位置

. 匹配除換行符\n 的所有字元

() 標記乙個子表示式的開始和結束位置

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

\ 將下乙個字元標記為 或特殊字元 或原義字元 或向後引用 或八進位制轉義符

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

n是乙個非負整數 匹配確定的 n次,例如:'o(2)' 不能匹配 bob中的 o 但是只能能匹配boob中的兩個o

n是乙個非負整數 至少匹配n次,例如 'o(2,)' 不能匹配 bob 但是能匹配 booob

(n,m) m,n 都是非負整數 其中 n<=m 最少匹配n次最多匹配 m 次

例子:如要匹配乙個字串全是數字 / [1-9][0-9]*/ 意思是,第一位是1-9的數字,第二位及以後n位均是 0-9的數字

如果要匹配 《你們好》 標籤內的所有內容 /<.*>/

定位符定位符能夠將正則固定到行尾或行首

^ 匹配輸入字串開始的位置

$ 匹配輸入字串結尾的位置

\b 匹配乙個字的邊界 即字與空格間的位置

\b 非字邊界匹配

例子:例如需要匹配乙個文章的章節 /^chapter [1-9][0-9]*$] 代表從一行的開始到結尾只有這樣的字元 chapter99999

/\bkin/ 匹配 kinmos 這樣的字元 /mos\b/匹配 kinmos這樣的字元而並不能匹配 moskin

/\bmo/ 匹配 kinmos 卻不匹配moskin

反向引用

對乙個正規表示式模式或部分模式兩邊新增圓括號將導致相關匹配儲存到乙個臨時緩衝區,所捕獲的每個子匹配都按照在正規表示式模式中從左到右出現的順序儲存,

緩衝區編號從1 開始 ,最多可以儲存99個捕獲的子表示式,每個緩衝區都可以使用 \n 訪問,其中 n 為乙個標識特定緩衝區 的一位或兩位十進位制數

可以使用非捕獲元字元 ?: ?= ?! 來重寫捕獲,忽略對相關匹配的儲存

例子:匹配重複的單詞

var str="it is itt is you like you";

var preg=/\b([a-z]+) \1\b/;

document.wrote(str.match(preg));

捕獲的表示式,正如[a-z]+ 指定的,包括乙個或多個字母,正規表示式的第二部分是對以前捕獲的子匹配項的引用,即單詞的第二個匹配項正好由括號表示式匹配, \1 指定第乙個子匹配項

分解url

var str="";

var preg=/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/;

console.log(str.match(preg));

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

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

第三個括號子表示式捕獲埠 該子表示式匹配冒號後面的零個或多個數字,只能重複一次該子表示式

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

元字元[xyz] 字元集合 匹配所保安的任意乙個字元

[^xyz] 負值字元集合 匹配未包含的任意字元

[a-z] 字元範圍,匹配指定範圍內的任意字元

[^a-z] 負值字元範圍

\d 匹配乙個數字字元 等價於 [0-9]

\d 匹配乙個非數字字元

\f 匹配乙個換頁符

\n 匹配乙個換行符

\s 匹配任何空白字元

\w 匹配包括下劃線的任何單詞字元 等價於 [a-za-z0-9_]

\w 匹配任何非單詞字元

運算子優先順序

正規表示式從左到右進行計算,並遵循優先順序順序,這與算術表示式相似

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

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

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