首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XRegExp不看后面吗?

XRegExp不看后面吗?
EN

Stack Overflow用户
提问于 2013-08-09 22:47:50
回答 2查看 1.1K关注 0票数 4

我需要在JavaScript中使用regex的lookbehind,所以找到了在JavaScript中模拟查找(取2)。此外,我发现作者Steven是开发XRegExp的人。

我克隆了XRegExp 3.0.0-pre,并测试了

使用http://regex101.com/r/xD0xZ5的一些查找逻辑XRegExp

代码语言:javascript
复制
var XRegExp = require('xregexp');
console.log(XRegExp.replace('foobar', '(?<=foo)bar', 'test'));

它似乎不起作用;

代码语言:javascript
复制
$ node test
foobar

我错过了什么?谢谢。

编辑:我的目标是

代码语言:javascript
复制
(?<=foo)[\s\S]+(?=bar)

http://regex101.com/r/sV5gD5

(EDIT2链接错误并修改)

答案:

代码语言:javascript
复制
var str = "fooanythingbar";
console.log(str);
console.log(str.replace(/(foo)(?:[\s\S]+(?=bar))/g, '$1test'));

//footestbar

荣誉归于@Trevor高级谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-09 23:00:05

使用非捕获群是可能的。

代码语言:javascript
复制
$ node
> 'foobar'.replace(/(foo)(?:bar)/g, '$1test')
'footest'

String.replace的第二个参数中,$1的特殊表示法引用第一个捕获组,在本例中为(foo)。通过使用$1test,可以将$1视为第一个匹配组的占位符。展开后,这将变成'footest'

有关正则表达式的更多详细信息,请参见在这里查看与之匹配的内容

票数 1
EN

Stack Overflow用户

发布于 2018-04-19 21:14:04

我想介绍一下情况的最新情况。

前瞻性断言从一开始就成为JavaScript正则表达式语法的一部分。在谷歌Chrome 62中,他们的对应方--查找后断言--终于成为了介绍 . 来源:https://developers.google.com/web/updates/2017/07/upcoming-regexp-features

如果您在铬62+,v8 6.2.414中运行这个程序,您将得到预期的结果:footest

代码语言:javascript
复制
var x = XRegExp('(?<=foo)bar', 'g');
console.log(XRegExp.replace('foobar', x, 'test'));

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

然而,还没有其他浏览器支持查找断言--甚至node.js也不支持,它基于v8 (用节点v9.7.1/v8 6.2.414.46进行测试,但我预计它将在即将发布的节点版本中添加)。

希望其他供应商很快就会跟进。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18156794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档