为什么'aab'.replace(/^a(?<=a)b{0,3}/g, 'c')
这个正则替换的结果是"cab"啊?
我的理解是:
^匹配字符串的开始位置,与其后的a共同匹配'位于开始位置的a';
后面的(?<=a)b{0,3}匹配前面是a的b,那么结果应该匹配'aab'中开始的'a'和最后一个'b'才对,为何只会匹配最开始的a呢?求解惑。
为什么'aab'.replace(/^a(?<=a)b{0,3}/g, 'c')
这个正则替换的结果是"cab"啊?
我的理解是:
^匹配字符串的开始位置,与其后的a共同匹配'位于开始位置的a';
后面的(?<=a)b{0,3}匹配前面是a的b,那么结果应该匹配'aab'中开始的'a'和最后一个'b'才对,为何只会匹配最开始的a呢?求解惑。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
js不支持
positive lookbehind
,觉得这样的结果是因为正则表达式对象无视了不认识的(?<=)
以及之后的所有表达式,所以只匹配了一个a