常見匹配字符的元字符:javascript
.
匹配除換行符之外的任意字符。\w
匹配字母或數字或下劃線或漢字。\s
匹配任意的空白符。\d
匹配數字。\W
匹配任意不是字母,數字,下劃線,漢字的字符。\S
匹配任意不是空白符的字符。\D
匹配任意非數字的字符。[0-9]
和[^abc]
也都匹配一個字符。常見匹配位置的元字符:html
\b
匹配單詞的開始或結束。^
匹配字符串的開始。$
匹配字符串的結束。\B
匹配不是單詞開頭或結束的位置。如下列字符串("abc def"
)爲例:java
^
能夠匹配到位置0,該位置位於字符串開頭。$
能夠匹配到位置7,該位置位於字符串結尾。\b
能夠匹配到位置0、位置三、位置四、位置7,這些位置位於單詞開始或結束處。
()
經過小括號分組匹配多個字符。(abc)
匹配abc
三個字符。限定符:正則表達式
*
重複零次或更屢次。+
重複一次或更屢次。?
重複零次或一次。{n}
重複n次。{n,}
重複n次或更屢次。{n,m}
重複n到m次。.+
,[0-9]*
。(abc){2, 5}
。1.*3
全局查找字符串12313
,匹配結果爲12313
。?
,則匹配模式爲非貪婪模式,儘量少的匹配。例如,正則1.*3
全局查找字符串12313
,匹配結果爲123
、13
。1.(a|b)
匹配包含a
或b
的字符。
2.abc|def
匹配包含abc
或def
的字符。
3.^abc|def$
匹配abc
開頭或者def
結尾的字符。
4.^(abc|def)$
只匹配abc
或def
這兩個字符。spa
()
指定子表達式後,匹配子表達式的文本(分組捕獲的內容)能夠在表達式或其它程序中做進一步的處理。'<html></html>'.match(/<(.+?)><\/\1>/)
中\1
表明分組1匹配的文本。(?<Name>)
指定子表達式的組名(Name),\k<Name>
引用捕獲的內容。'<html></html>'.match(/<(?<tag>.+?)><\/\k<tag>>/)
組名爲tag。\b\w+(?=ion\b)
,匹配誰後面有ion
結尾,則查找position relative
時,它會匹配posit
。(?<=\bun)\w+\b
,匹配誰前面有un
開頭,則查找see unreal
時,它匹配real
。\abc(?!\d)
匹配後面沒有數字的abc
,則查找abc1 abcd
時,它匹配是後面的abc
。\(?<!\d)abc
匹配前面沒有數字的abc,則查找abc 1abc
時,它匹配是前面的abc
。12(?!\d)
全局匹配下列字符串的過程:code
(?!\d)
,它從位置2開始匹配,要求位置後面不是數字,匹配成功。(?!\d)
,匹配位置5,要求位置後面不是數字,而該位置後面是數字,匹配失敗。(?!\d)
,匹配位置7,該位置後面不是數字,匹配成功。12
,不匹配中間的12
。
'12a1212'.match(/12(?!\d)/g) // ["12", "12"]