Regex字元小結

來源:互聯網
上載者:User
Regex基本

匹配單個字元

匹配單個數位寫法,可以是 “[0-9]” 也可以是 “\d”。

匹配單個非數字字元,則使用大寫 “\D”。

匹配 26 個字母的任意一個,使用 “[a-zA-Z]

匹配任意一個字元,使用點號 “.

匹配具體字元,則直接寫上去即可。比如 “abcd” 就是匹配它本身。如果遇到特殊字元,則需要進行轉義,逸出字元為 “\”。

匹配一個字元,使用中括弧的做法稱為 “字元集”。中括弧用於指定一個 “”,匹配這個集中的一個字元,如十六進位數 “[0-9a-fA-F]”。字元集內的點表示的是點號本身,但其他的特殊字元還是需要進行轉移,比如反斜線字元。

使用量詞

貪心匹配

如果要表示某個規則的重複,則需要使用量詞。使用花括弧表示重複次數。比如 8 個數字可以這樣表示:“\d{8}

花括弧中的量詞可以變化,比如表示 7 到 8 個數字,則表示為 “\d{7,8}”。表示上限的右值可以不寫,比如 “{0,}” 是合法的,表示大於等於 0 個字元;但試圖單獨表示上限的 “{,10}” 則不合法,至少應該寫為 “{0,10}”。

加號 “+” 表示它左邊的元素數量為 “一個或多個”,等於 “{1,}” 的效果。所以加號也是特殊字元。

星號 “*” 表示它左邊的元素數量為 “零個或至少一個”,即 “{0,}”。

問號 “?” 表示 “零個或一個”,等同於 “{0,1}”。

懶惰匹配

上面的諸如 +*,匹配的時候都會使用 “貪心” 的模式,也就是匹配盡量多的個數。比如字串 “55555”,使用 “5+” 去匹配時,會匹配到它能夠找到的最長字串,即 “55555”。

如果在量詞後面加上問號,則使匹配模式變為 “懶惰” 的,也就是匹配最少的。比如使用 “5+?” 去匹配,則只會找到能夠匹配的最小字元 “5”.

以下都是可用的懶惰匹配運算式:+?, *?, {n,}?, {m,n}?

捕獲分組(類似於宏定義)

可以把運算式中的一部分 “捕獲” 起來,作為宏放在後邊引用。使用括弧進行定義(捕獲),然後再定義的後面使用 “\1” 進行引用;如果是第二個捕獲,則使用 “\2”,以此類推。

分組一般都會被儲存起來,但是當運算式非常長的時候,可能需要明確指明不儲存該分組。比如使用這個格式 “(?:THE|The|the)”,就使用了 “?:” 標號來表示不要進行命名標記。

“或” 邏輯

使用 “|” 來連結兩個欄位,提供 “或” 的邏輯。注意與括弧搭配使用

“非” 邏輯

如果在集合 “[...]” 中使用字元 “^”,則表示 “非”,如 “[^0-9]” 等同於 “\D”。

簡單的模式比對

以下是各種常用的單字元匹配列表:

指代類型 模式 備忘
數字 \d
字母、數字、底線 \w 等效於 “[_a-zA-Z0-9]
非數字 \D
非字母 \W
定位字元 Tab \t
Null 字元 \0
Backspace [\b]
空格 \s 等效於 “[ \t\n\r]
Return \r
換行 \n
單詞之間的空白 \b 這裡只是匹配單詞的開始 / 結束,不消耗任何字元
任意一個字元 . 行結束符無法使用這個符號匹配

邊界

本小節設計一個概念:斷言,又稱為 “零寬度斷言(zero-width asseration)”。這個概念不匹配字元,而是匹配字串中的位置。

行的起始和結束

  • 使用 “^” 表示一行的開始

  • 使用 “$” 表示一行的終止

單詞邊界和非單詞邊界

比如要匹配單詞 “the”,則寫 “\bthe\b”。如果要匹配哥哥中間帶 “e” 的單詞,則可以寫 “\Be\B

可以使用 “\<” 匹配單詞開頭,“\>” 匹配單詞結尾。但是這兩個並不建議使用,因為新的匹配器可能不支援。

Unicode 字元和其他字元

Regex支援輸入 unicode 的值,如 “\u00e9”。注意 unicode 必須有四位十六進位位,大小寫均可。Javascript 還支援 “\xe9” 的寫法,然而 “\x00e9” 則是錯誤的。

相關推薦:

jsRegex驗證時間格式執行個體

Regex \v 元字元詳解

JSRegex要點分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.