前瞻
1.正規表達式從文本頭部向尾部開始解析,文本尾部方向,稱為“前”
2.前瞻就是在正規表達式比對到規則的時候,向前檢查是否符合斷言(條件),後顧/後瞻方向相反
3.JavaScript不支援後顧
4.符合和不符合特定斷言(條件)稱為 肯定/正向 比對和 否定/負向 比對
名稱 | 正則 | 含義 |
正向前瞻 | exp(?=assert) | |
負向前瞻 | exp(!=assert) | |
正向後顧 | exp(?<=assert) | Javascript不支援 |
負向後顧 | exp(?<!assert) | Javascript不支援 |
正向前瞻
第一部分為規則部分,第二部分為斷言(條件)部分
正向前瞻:\w(?=\d)
'a2*3'.replace(/\w(?=\d)/g,'X');
結果:"X2*3"
'a2*34v8'.replace(/\w(?=\d)/g,'X');
結果:"X2*X4X8"
'a2*34vv'.replace(/\w(?=\d)/g,'X');
結果:"X2*X4vv"
負向前瞻:\w(?!\d)
'a2*34vv'.replace(/\w(?!\d)/g,'X');
結果:"aX*3XXX" //2是單詞字元,*不是數字,2被比對掉。以此類推
對象屬性
g:global全文搜尋,不添加,搜尋到第一個比對停止。預設false
i:ignore case 忽略大小寫,預設大小寫敏感。預設false
m:multiple lines 多行搜尋。預設false
lastIndex 是目前表達式比對内容的最後一個字元的下一個位置。(後面會舉例介紹)
source 正規表達式的文本字元串