JavaScript中的正则表达式 - 替换Image src属性

时间:2009-08-19 08:34:31

标签: javascript regex

在JavaScript中,我有一个包含DOM片段的字符串。我如何找到并替换图像的src属性?

我想用新路径替换所有图像的路径,但保留图像名称。并非所有路径都相同,可以来自不同的位置。 我的正规表达能力最差。

例如:

Change

   <img src='path/to/image/name.jpg' />

into 

   <img src='newPath/name.jpg' />

5 个答案:

答案 0 :(得分:10)

得到了gumbo的答案并添加了一些改进它的东西:

  • 如果输入字符串包含某些内容 除了<img>标签之外的其他标签 一个src属性 - 这将不再存在 匹配/替换它们。

  • src属性可能是 使用单引号或双引号。

  • 测试不区分大小写。

导致:

string.replace(/<img([^>]*)\ssrc=(['"])(?:[^\2\/]*\/)*([^\2]+)\2/gi, "<img$1 src=$2newPath/$3$2");

答案 1 :(得分:7)

试试这个:

str.replace(/src='(?:[^'\/]*\/)*([^']+)'/g, "src='newPath/$1'");

答案 2 :(得分:2)

如果以字符串形式使用HTML等原始(非DOM)数据,则上述内容与双引号字符不匹配。这段代码也可能有用:

root     = serviceURL("file") + "&src=" + encodeURIComponent(root);
// html itself
html     = html.replace(/src=['"](?:[^"'\/]*\/)*([^'"]+)['"]/g, "src='" + root + "/$1'");

答案 3 :(得分:1)

replace(/(.*)\/(.*)/, "newPath/$2");

答案 4 :(得分:0)

我在我的项目中使用了这些表达式,像魅力一样工作,处理所有案例,如引用,双引号,文本中的多个图像标签等。 在Javascript中

text.replace(/\<img([^>]*)\ssrc=('|")([^>]*)\2\s([^>]*)\/\>/gi, "<img$1 src=$2newPath/$3$2 $4/>");

在PHP中

preg_replace('/\<img([^>]*)\ssrc=(\'|\")([^>]*)\2\s([^>]*)\/\>/', "<img$1 src=$2newPath/$3$2 $4/>",$text);