- 正則的聲明
- 構造函數:
var reg = new RegExp()
;
- 字面量:
var reg = /hello/g
;
其中,g表示全局搜索,i表示忽略大小寫,m表示多行搜索。
- 元字符
(
,[
,{
,\
,^
,$
,|
,)
,?
,*
,+
,.
字符 |
含義 |
\t |
制表符 |
\r |
回車符 |
\n |
換行符 |
\f |
換頁符 |
\cX |
與X對應的控制字符 |
\v |
垂直制表符 |
\o |
空格符 |
- 字符類
一般情況下正則表達式一個字符對應一個字符串的字符,表達式ab\t
的含義是匹配ab,和一個制表符。
var str = "ab ";
var reg = /ab\t/ig;
var rlt = reg.test(str);
- 預定義類
字符 |
等價類 |
含義 |
. |
[^\r\n] |
除了回車符和換行符之外的所有字符 |
\d |
[0-9] |
數字字符 |
\D |
[^0-9] |
非數字字符 |
\s |
[\t\n\0B\f\r] |
空白符 |
\S |
[^\t\n\0B\f\r] |
非空白符 |
\w |
[a-zA-Z0-9_] |
單詞字母下劃線 |
\W |
[^a-zA-Z0-9_] |
非單詞字母下劃線 |
- 邊界
字符 |
含義 |
^ |
以xxx開頭在中括號里面的^表示取反,其他情況表示開頭。 |
$ |
以xxx結尾 |
\b |
單詞邊界 |
\B |
非單詞邊界 |
- 量詞
字符 |
含義 |
? |
出現0次或者1次(最多出現一次) |
+ |
出現一次或多次(最少出現一次) |
* |
出現任意次 |
{n} |
出現n次 |
{n,m} |
出現n到m次 |
{n,} |
至少出現n次 |
- 貪婪模式和非貪婪模式
什么是貪婪模式:正則表達式默認是趨于最大長度的匹配,比如比如{3,5}
這個量詞,那么js會默認先匹配5個。這就是貪婪模式。
既然有貪婪模式,那么肯定會有非貪婪模式,讓正則表達式盡可能少的匹配,也就是說一旦成功匹配不再繼續嘗試,做法很簡單,在量詞后加上?
即可
//貪婪模式
'123456789'.match(/\d{3,5}/g); //["12345", "6789"]
//非貪婪模式
'123456789'.match(/\d{3,5}?/g); //["123", "456", "789"]
- 分組
Bryon{20}//表示n出現20次。
(Bryon){20}//表示Bryon出現20次
(Bryon|conser){20}//表示Bryon或者conser出現20次