關于正負向前瞻,感覺教程和定義不一樣
正向前瞻exp(?=assert)是在正則表達式匹配到規則的時候向前檢查是否符合斷言。是的話執行正向前瞻
負向前瞻exp(?!assert)是在正則表達式匹配到規則的時候向前檢查是否不符合斷言。是的話執行負向前瞻
都是從后往前匹配
\w匹配的是 [a-zA-Z_0-9]
'a2*34v8'.replace(/\w(?=\d)/g,‘X’)
為什么結果是‘X2*X4X8’?不是應該從后往前匹配么?a符合\w,但是前面沒有數字不符合(?=\d)。
還有'a2*34v8'.replace(/\w(?!\d)/g,‘X’) ,結果是‘aX*3XXX’
這兩個都和正向前瞻和負向前瞻定義相反,為什么??
2018-02-17
“正則表達式是從文本頭部向尾部解析”。這就像在走路,沒走過的路在你的前面,需要你往前看(前瞻);走過的路需要你回頭看(后顧)