在正则表达式当中有个东西叫做前瞻
表达式 | 名称 | 描述 |
(?=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.