在正則表達式當中有個東西叫做前瞻
表達式 | 名稱 | 描述 |
(?=exp) | 正向前瞻 | 匹配後面滿足表達式exp的位置 |
(?!exp) | 負向前瞻 | 匹配後面不滿足表達式exp的位置 |
(?<=exp) | 正向後瞻 | 匹配前面滿足表達式exp的位置(JS不支持) |
(?<!exp) | 負向後瞻 | 匹配前面不滿足表達式exp的位置(JS不支持) |
由於 JS 原生不支持後瞻,所以這裏就不研究它了。我們來看看前瞻的作用:
1 var str = 'Hello, Hi, I am Hilary.'; 2 var reg = /H(?=i)/g; 3 var newStr = str.replace(reg, "T"); 4 console.log(newStr);//Hello, Ti, I am Tilary.
在這個DEMO中我們可以看出正向前瞻的作用,同樣是字符"H",但是隻匹配"H"後面緊跟"i"的"H"。就相當於有一家公司reg,這時候有多名"H"人員前來應聘,但是reg公司提出了一個硬條件是必須掌握"i"這項技能,所以"Hello"就自然的被淘汰掉了。
那麼負向前瞻呢?道理是相同的:
1 var str = 'Hello, Hi, I am Hilary.'; 2 var reg = /H(?!i)/g; 3 var newStr = str.replace(reg, "T"); 4 console.log(newStr);//Tello, Hi, I am Hilary.