如何将以下内容编写为正则表达式来替换多次出现?

时间:2012-03-25 18:15:00

标签: javascript jquery regex

背景

我有大约10个图像标记的html字符串,它们在注入包含元素之前在运行时作为字符串传递一些JavaScript。每个图像的data-thumb标记略有不正确,需要在进入DOM之前进行更改。这是一个例子:

<img src="foo_lg_db.jpg" data-large="foo_lg_db.jpg" />
<img src="bar_lg_db.jpg" data-large="bar_lg_db.jpg" />
<img src="fizz_lg_db.jpg" data-large="fizz_lg_db.jpg" />

需要成为:

<img src="foo_tn_db.jpg" data-large="foo_lg_db.jpg" />
<img src="bar_tn_db.jpg" data-large="bar_lg_db.jpg" />
<img src="fizz_tn_db.jpg" data-large="fizz_lg_db.jpg" />

问题:

在JavaScript中(jQuery没问题),如何实现此搜索并替换?

回答:

感谢Mark的回答,我了解到可以在jQuery对象到达DOM之前对其进行实例化,而不是使用regex,我做了类似的事情:

var stringHtml = "<img . . .";
var div = $("<div>").html(stringHtml );
$.each(div.find('img[src]'), function () {
    $(this).attr('src', $(this).attr('src').replace('_lg', ''));
});

return div.html();

1 个答案:

答案 0 :(得分:1)

$('img[data-thumb]').each(function() {
    $(this).attr('data-thumb', $(this).attr('data-thumb').replace('_lg_','_tn_'));
});

jQuery中的那种东西。

如果可能的话,听起来像是应该修复服务器端的问题。


如果你给jQuery一个像$('<div>')这样的HTML元素,它基本上会为你创建HTML元素,然后你可以在将它插入你的DOM之前对其进行操作。我不知道它是否会处理多个元素,但你可以先创建一个容器(如上所述),然后像这样设置内容

$('<div>').html(yourHtml).find('img[data-thumb'])./* code above */