正則表達式——特殊符號及其意義
阿新 • • 發佈:2017-06-15
front 限定符 修飾 規則 art 所有 ble 編號 exp
1、非打印字符 | |||
\cx | 匹配由x指明的控制字符。 | \cM:匹配一個control-M或回車符 | x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 ‘c’ 字符。 |
\f | 匹配一個換頁符,等價於\x0c \cL | ||
\n | 匹配一個換行符,等價於\x0a \cJ | ||
\r | 匹配一個回車,等價於\x0d \cM | ||
\s | 匹配一個任意空白字符,等價於[\f\n\r\t\v] | ^\s*\s$:匹配開頭和結尾的空白字符 | |
\S | 匹配一個任意非空白字符,等價於[^\f\n\r\t\v] | ||
\t | 匹配一個制表符 | ||
\v | 匹配一個垂直制表符 | ||
2、特殊字符 | |||
() | 標記一個子表達式的開始和結束位置,子表達式可獲取供以後使用 | (\s*):匹配連續空格 | var str = "abc sb b sa b sc abc sd"; var reg = /s([abc]+\b)/; var arr = str.match(reg); //arr = ("sb","sa","sc"); //臨時緩存區$1 = "b",$2 = "a",$3 = "c"; ()會導致所有匹配存到一個臨時緩沖區,緩沖區編號為1-99,每個緩沖區都可以用\n(1<n<99的十進制數)來引用。 var reg2 = /s([abc]+\b)\s+\1\b/;//匹配s([abc]+\b)\s+b\b的字符串 var arr2 = str.match(reg); //arr2 = ("sb b","sa b"); |
[] | 定義一個匹配的字符串範圍 | [ab]:匹配a或b號 | |
{} | 一般用來表示匹配的長度 | \s{3}:匹配三個空格 | |
* | 匹配前面子表達式零次或多次 | a*:匹配連續的一個或多個a | |
+ | 匹配前面子表達式一次或多次 | a+:匹配連續的兩個或多個a | |
. | 匹配換行符以外的所有字符 | 要匹配換行符用[.\n] | |
? | 匹配前面的子表達式零次或多次,或指明一個非貪婪限定字符 | 貪婪匹配:正則表達式趨向於匹配最大長度的字符串("aaaaa".match(/a*/);//aaaaa) 非貪婪匹配:匹配到結果就好了("aaaaa".match(/a*?/);//a) ?的四種用法: 1、匹配前面子表達式0/1次 2、指明非貪婪限定字符 *?、+?、??、{n}?、{n,}?、{n,m}? 3、原文符號,\? 4、不捕捉模式 (?……) | |
\ | 將下一個字符標記為特殊字符或原意字符或者向後引用 | \n:匹配換行符 \\:匹配\ \1:引用第一個緩存區 |
|
^ | 匹配輸入字符的開始位置。在[]中使用,表示不接受改字符集合 | ^[1-9][0-9]*{3}:不以0開頭的四位數字 | |
$ | 匹配輸入字符的結尾的位置。如果設置了RegExp對象的Multitle屬性,則也匹配‘\n’或‘\r‘ | [a-z]*a$:匹配以a結尾的字符串 | |
| | 指明兩項之間的一個選擇 | a|b:匹配a或b | |
3、限定符 | |||
{n} | n是一個非負整數,匹配確定的n次 | a{3}:匹配aaa | |
{n,} | n是一個非負整數,匹配至少n次 | a{3,}:匹配aaa,aaaa,aaaaa…… | |
{n,m} | n<m,匹配至少n次至多m次 | a{2,3}匹配aa,aaa | |
\b | 單詞分界符 | ll\b:匹配hell中的“ll”,但是不匹配hello中的“ll” | |
\B | 非單詞分界符序列 | ll\B:不匹配hell中的“ll”,但匹配hello中的“ll” | |
\A | 總是能夠匹配帶搜索文本的起始位置 | ||
\Z | 標示在未指定任何模式下匹配的字符,通常是字符串的末尾位置,或者是在字符串末尾的換行符之前的位置 | ||
\z | 字匹配字符串的末尾,而不考慮任何換行符 | ||
\G | 當前匹配的起始位置 | ||
4、預定義字符集 | |||
\d | 任意一個十進制數字,相當於[0-9] | ||
\D | 任意一個非十進制數字 | ||
\s | 任意一個空白字符 | ||
\S | 任意一個非空白字符 | ||
\w | 任意一個單詞字符,相當於[a-zA-Z0-9] | ||
\W | 任意一個非單詞字符 | ||
5、修飾符 | |||
i | 忽略大小寫的模式(?i……,?-i……,?i:……) | [a-z]i:等同於[a-zA-Z] | |
M | 多文本模式。即字符串內部有多個換行符時,影響“^”,“$”的匹配 | ||
s | 但文本模式。在此模式下,元字符“.”可以匹配換行符。其他模式規則則不能匹配換行符 | ||
X | 忽略空白字符 | ||
6、捕獲分組 | |||
(exp) | 匹配exp,並捕獲文本到自動命名的組裏 | ||
(?<name>exp) | 匹配exp,並捕獲文本到名為name的分組裏 | ||
(?:exp) | 匹配exp,不補貨匹配的文本,也不給次分組匹配組號 | ||
以下為零寬斷言 | |||
(?=exp) | 匹配exp前面的位置 | "How are you doing".match(/(?<txt>.+(?=ing))/);txt = "How are you do"; | |
(?<=exp) | 匹配exp後面的位置 | ||
(?=!exp) | 匹配前面不是exp的位置 | ||
(?<=!exp) | 匹配後面不是exp的位置 | ||
別人寫的教程 | http://blog.csdn.net/baidu_31333625/article/details/72846270 | ||
常用正則表達式 | https://c.runoob.com/front-end/854 | ||
正則表達式——特殊符號及其意義