gpt4 book ai didi

JavaScript .replace() 只替换最后一场比赛?

转载 作者:搜寻专家 更新时间:2023-11-01 00:33:53 24 4
gpt4 key购买 nike

看来 JS 只是替换了正则表达式字符串的最后一个匹配项。我的正则表达式很可能有问题。

var data = "<div class=\"separator\" style=\"clear: both; text-align: center;\"><img border=\"0\" src=\"https://lh3.googleusercontent.com/-dJnr7dsB21Y/UEhijTGNweI/AAAAAAAAA_w/DWiWYDOHXBA/s640/blogger-image-438529929.jpg\" /></div><div class=\"separator\" style=\"clear: both; text-align: center;\"><img border=\"0\" src=\"https://lh4.googleusercontent.com/-B3wU95K7DLI/UEhiuu75V-I/AAAAAAAAA_4/lxzGd2WajNE/s640/blogger-image-1479348845.jpg\" /></div>";
var regex = /<img (.*)src=\"(.*)\" (.*)\/>/g;
console.log("Before: "+data);
console.log("After: "+data.replace(regex, "[$2]"));

输出如下;

Before: <normal before string>
After: <div class="separator" style="clear: both; text-align: center;">[https://lh4.googleusercontent.com/-B3wU95K7DLI/UEhiuu75V-I/AAAAAAAAA_4/lxzGd2WajNE/s640/blogger-image-1479348845.jpg]</div>

(只返回最后一张图片)

顺便说一下,这是 node.js。

最佳答案

这是因为您使用的是匹配标签结尾的贪婪匹配。

试试这个:

var regex = /<img ([^>]*)src="([^"]*)" ([^>]*)\/>/g;

我使用了 ([^>]) 或 ([^"]) 而不是 (.*),它们被称为否定字符类,并且否定字符类在一个范围内匹配不包括字符类中列出的字符。

编辑:根据 Felix 的评论,删除了转义双引号,谢谢!

关于JavaScript .replace() 只替换最后一场比赛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12825946/

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