gpt4 book ai didi

javascript regex - 用不同的字符串替换给定表达式的每个匹配项

转载 作者:行者123 更新时间:2023-12-02 19:45:19 25 4
gpt4 key购买 nike

我有一个包含一些 html 标记的字符串,如下所示:

var html = "<div>
<img src="http://test.com/image1.png" />
<h1>SOME TEXT</h1>
<img src="http://text.com/image2.jpg" />
</div>";

我想替换 src="..." 内的所有网址

如果我这样做就可以 html = html.replace(/[^-]src\=["|'](.*?)['|"]/g, "SOME_URL");
然后所有 src="..." 变成 src="SOME_URL"

但现在我想用从数组中获取的不同字符串替换每个匹配项,但我遇到了麻烦。
我想我必须使用一个函数来替换,但不知道如何实现它。
类似于:
html = html.replace(/[^-]src\=["|'](.*?)['|"]/g, function ($0, $1){//我在这里做什么? ?? });

所以,如果我有:

var arr = [];
arr['http://test.com/image1.jpg']='file1';
arr['http://test.com/test.jpg']='file3';

上面的 html 字符串将变成:

"<div>
<img src="file1" />
<h1>SOME TEXT</h1>
<img src="http://text.com/image2.jpg" />
</div>"

请注意,“http://text.com/image2.jpg”不是数组的键,因此它不会被替换。

感谢您的帮助,提前谢谢您。

最佳答案

var html = '<div><img src="http://test.com/image1.jpg" />...</div>';

var arr = {
'http://test.com/image1.jpg' : 'file1',
'http://test.com/test.jpg' : 'file3'
}

html = html.replace(/[^-]src\=["|'](.*?)['|"]/g, function ($0, $1){
return ' src="' + (arr[$1] || $1) + '"';
});

console.log(html) 返回

"<div><img src="file1" /><h1>SOME TEXT</h1><img src="http://text.com/image2.jpg" /></div>"

关于javascript regex - 用不同的字符串替换给定表达式的每个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9941700/

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