Javascript 只有一个工作边界,两个正则表达式怎么会如此不同?
我在寻找一个正则表达式,它能找到紧跟在单词Javascript 只有一个工作边界,两个正则表达式怎么会如此不同?,javascript,regex,Javascript,Regex,我在寻找一个正则表达式,它能找到紧跟在单词cat后面的单词,所以我想出了两个正则表达式,我知道第二个是正确的。但我不明白,仅仅用一个词的边界,结果就完全不同了,我不明白为什么。这两个正则表达式之间到底有什么区别 有两个正则表达式: const regex=/\w+(?=\w+cat)\b/g; const str=“zex dsfsdjf dsf sdlf cat catestrophic caty wcat”; console.log(str.match(regex))很简单: 在\w+
cat
后面的单词,所以我想出了两个正则表达式,我知道第二个是正确的。但我不明白,仅仅用一个词的边界,结果就完全不同了,我不明白为什么。这两个正则表达式之间到底有什么区别
有两个正则表达式:
const regex=/\w+(?=\w+cat)\b/g;
const str=“zex dsfsdjf dsf sdlf cat catestrophic caty wcat”;
console.log(str.match(regex))代码>很简单:
- 在
\w+(?=\w+cat\b)
中,\b
是匹配的,并且在cat
匹配的位置之后不立即使用:
- 本质上,只要后面跟着
(?=\w+cat\b)
,您就可以匹配并消费任何\w+
匹配的内容李>
- 您可以看到,
sdlf
是行中唯一的匹配项,因为(?=\W+cat\b)
只有一个匹配项,这就是整个cat
- 在
\w+(?=\w+cat)\b
中,\b
在\w+
匹配的位置之后立即匹配和使用:
- 只要
\w+
匹配的内容后面跟着和(?=\w+cat)
,前者与\w+
一起消费,后者不被消费,您就匹配并消费它(实际上,\b
并没有被使用,因为它是一个零长度匹配,正如您在一个简单的例子中所看到的那样,多个\b
就可以了)
@TimBiegeleisen在问题的第一行中提到。您是如何将regexp可视化的?这实际上是非常有启发性的。