javascript - XRegExp 没有回顾?

标签 javascript regex xregexp

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

最佳答案

我想介绍一下最新情况。

Lookahead assertions have been part of JavaScript’s regular expression syntax from the start. Their counterpart, lookbehind assertions, are finally being introduced ... *in Google Chrome 62
Source: https://developers.google.com/web/updates/2017/07/upcoming-regexp-features

如果您使用 Chrome 62+, v8 6.2.414 运行它你会得到预期的结果:footest
- 独立于 XRegex !

 
var x = XRegExp('(?<=foo)bar', 'g');
console.log(XRegExp.replace('foobar', x, 'test'));

console.log("foobar".replace( new RegExp('(?<=foo)bar',"g"),"test"));
<script src="https://unpkg.com/xregexp/xregexp-all.js"></script>

但是,目前还没有其他浏览器支持后向断言 - 甚至是基于 v8 的 node.js(使用 node v9.7.1/v8 6.2.414.46 测试,但我希望它会在即将发布的节点版本中添加。)

希望其他 vendor 很快跟进。

关于javascript - XRegExp 没有回顾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18156794/

相关文章:

javascript - jQuery flipswitch 导致主干 View 重新加载

javascript - 使用 javascript 正则表达式提取指定类的 href 值(单独)

javascript - 正则表达式不会按预期匹配单词

regex - 如何对从 Perl 的菱形运算符返回的数据进行多行匹配

javascript - javascript中递归语法的正则表达式

javascript - 如何使用全词正则表达式搜索梵文文本?

javascript - jQuery:斑马条纹表

javascript - 输入未绑定(bind)的 Ng-model 返回未定义

javascript - 空/空白打印页

java - 在java中使用正则表达式匹配大文本中的内容