元字符 metacharacter
重復(fù)
- 重復(fù)使用任意次,包括0
- 重復(fù)1次或更多次
? 重復(fù)0或1次
{2} 重復(fù)2次
{3,5} 重復(fù)3到5次
字符類 []
[aeiou] 任何一個(gè)英文元音字母
[a-z0-9A-Z_] 等同于\w
[0-9] 等同于\d
分支條件 |
分組()
反義
\W 匹配任意不是字母,數(shù)字,下劃線,漢字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非數(shù)字的字符
\B 匹配不是單詞開頭或結(jié)束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou這幾個(gè)字母以外的任意字符
后向引用
(exp) 匹配exp,并捕獲文本到自動(dòng)命名的組里
(?<name>exp) 匹配exp,并捕獲文本到名稱為name的組里,也可以寫成(?'name'exp)
(?:exp) 匹配exp,不捕獲匹配的文本,也不給此分組分配組號(hào)
零寬斷言
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?<!exp) 匹配前面不是exp的位置
(?#comment) 這種類型的分組不對(duì)正則表達(dá)式的處理產(chǎn)生任何影響,用于提供注釋讓人閱讀
(?!exp) 斷言此位置的后面不能匹配表達(dá)式exp
(?<!exp) 斷言此位置的前面不能匹配表達(dá)式exp
貪婪與懶惰
*? 重復(fù)任意次,但盡可能少重復(fù)
+? 重復(fù)1次或更多次,但盡可能少重復(fù)
?? 重復(fù)0次或1次,但盡可能少重復(fù)
{n,m}? 重復(fù)n到m次,但盡可能少重復(fù)
{n,}? 重復(fù)n次以上,但盡可能少重復(fù)
<div[>]*>[<>](((?'Open'<div[^>]>)[<>]*)+((?'-Open'</div>)[<>])+)(?(Open)(?!))</div>
匹配嵌套的<div>標(biāo)簽
. 除了換行符以外的任意字符
\d 數(shù)字
\s 任意的空白符,包括空格,制表符(Tab),換行符,中文全角空格等
\w 字母或數(shù)字或下劃線或漢字等
\b 單詞的分界處 單詞的開頭或結(jié)尾
^ 匹配字符串的開始
$ 匹配字符串的結(jié)束
\ 轉(zhuǎn)義 查找元字符本身 . * \
-
和$分別代表字符串的開始和結(jié)束,因此\d$只能匹配包含一個(gè)數(shù)字的字符串
\b代表單詞邊界,其前后必須是不同類型的字符,可以組成單詞的字符為一種類型,不可組成單詞的字符(包括字符串的開始和結(jié)束)為另一種類型
因此\b\d\b可以匹配"%3%"中的3,但不能匹配"23"中的任意一個(gè)數(shù)字 - RegExp.test() js中測試正則