JavaScript的正则表达式 - 用不同的字符串
取代定表达式的每场比赛我有一个字符串contaning一些HTML标记,像这样:JavaScript的正则表达式 - 用不同的字符串
var html = "<div>
<img src="http://test.com/image1.png" />
<h1>SOME TEXT</h1>
<img src="http://text.com/image2.jpg" />
</div>";
我想更换内部src="..."
所有URL这是确定的,如果我做html = html.replace(/[^-]src\=["|'](.*?)['|"]/g, "SOME_URL");
那么所有src="..."
成为src="SOME_URL"
但现在我想替换每个匹配不同的字符串,从拍摄n阵列,但我遇到了麻烦。
我想我必须使用一个函数进行替换,但不知道如何实现它。
喜欢的东西:html = html.replace(/[^-]src\=["|'](.*?)['|"]/g, function ($0, $1){ //what do i do here??? });
所以,如果我有:
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>"
我关于正则表达式忘记在这种情况下,如果你有一个包含对象中的所有URL及其各自更换一个数组,为什么不这样做:
for (i in replaceObj)
{
html = html.split(i).join(replaceObj[i]);
}
试图在控制台:
html = '<div><img src="imgs/img.jpg"/></div>';
replaceObj = {};
replaceObj['imgs/img.jpg'] = 'file';
for(i in test){html = html.split(i).join(replaceObj[i])};
输出:<div><img src="file"/></div>
。你可以拆分src="'+i'"'
和concat。加入时一样安全......但底线:保持简单,只要你可以
感谢Elias因为我的问题而烦恼。有趣的方法,但我宁愿不改变我的初始设计,只要这是可能的。再次感谢您的回复;) – CrisDeBlonde 2012-03-30 12:10:49
虽然我不知道你最初的设计,也不想冒风格或冒犯:我唯一遗漏的就是正则表达式,据我所知...我可以'帮助它,真的...只要我看到有人在我不会的情况下使用正则表达式,我必须作出反应...如果您喜欢,请将其称为OCD; - )...祝您的项目顺利! – 2012-03-30 12:19:52
完美!我想我应该在那里分配一些东西(例如$ 0 = arr [$ 1];),应该想到返回......谢谢Fabrizio,救了我的一天! – CrisDeBlonde 2012-03-30 11:19:59
很高兴有用。 – fcalderan 2012-03-30 11:23:49