gpt4 book ai didi

javascript - XRegExp 没有回顾?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:35:44 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com