我需要在 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/

10-11 23:32