我需要在 JavaScript 中使用正则表达式的lookbehind,所以发现
Simulating lookbehind in JavaScript (take 2) 。
另外,我发现作者 Steven Levithan 是开发 XRegExp 的人。
我 git 克隆了 XRegExp 3.0.0-pre ,并进行了测试
一些后视逻辑
http://regex101.com/r/xD0xZ5
使用 XRegExp
var XRegExp = require('xregexp');
console.log(XRegExp.replace('foobar', '(?<=foo)bar', 'test'));
它似乎不起作用;
$ node test
foobar
我想念什么?谢谢。
编辑:
我的目标是这样的
(?<=foo)[\s\S]+(?=bar)
http://regex101.com/r/sV5gD5
(EDIT2链接错误并已修改)
答案:
var str = "fooanythingbar";
console.log(str);
console.log(str.replace(/(foo)(?:[\s\S]+(?=bar))/g, '$1test'));
//footestbar
归功于@Trevor Senior 谢谢!
最佳答案
可以为此使用 non-capturing groups,例如
$ node
> 'foobar'.replace(/(foo)(?:bar)/g, '$1test')
'footest'
在 String.replace 的第二个参数中,
$1
的特殊符号引用了第一个捕获组,在本例中为 (foo)
。通过使用 $1test
,可以将 $1
视为第一个匹配组的占位符。展开后,它变成 'footest'
。有关正则表达式的更多详细信息,请访问 view what it matches here 。
关于javascript - XRegExp 没有回头看?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18156794/