javascript正则表达式 - 添加关闭img标记

时间:2014-06-18 16:19:01

标签: javascript regex

我需要添加一个结束图片标记。当前的HTML:

<img class="logoEmail" src="/images/logoPDF.png">

我想要的是什么:

<img class="logoEmail" src="/images/logoPDF.png"/>

我该怎么做?

3 个答案:

答案 0 :(得分:3)

myInput ='<img class="example1" src="/images/example1.png">';
myInput += '<img class="example2" src="/images/example2.png"/>';

result = myInput.replace(/(<img("[^"]*"|[^\/">])*)>/gi, "$1/>");

正则表达式的解释:

<img开始

"[^"]*"标记内的字符串。可能包含/字符。

[^\/">]其他任何内容(不是字符串,不是/而不是标记的结尾)

> IMG标记的结尾

这只会匹配未完成的代码,并会将其全部替换为/>

正如我之前所说,这不是防弹的,可能没有100%正常工作的正则表达式。

答案 1 :(得分:3)

你也可以试试这个正则表达式,

result = myInput.replace(/^([^\.]*\.[^>]*)(.*)$/g, "$1/$2");

DEMO

它捕获字面上的所有字符并将其存储到一个组中。然后它再次捕获最多>的字符并存储到另一个组中。在替换部件中捕获的组之间添加/将为您提供所需的输出。

答案 2 :(得分:0)

可以这么简单:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Demo Replace IMG tags w/ regex</title>
    <script type="text/javascript">
        window.onload = function() {
            document.body.innerHTML = document.body.innerHTML.replace(/(<img[^>]+)/g, "$1 /");
        }
    </script>
</head>
<body>
    <p>Some text.</p>
    <img src="images/logoPhone.jpg">
        <br>
    <img src="images/logoMail.png">
    <p>Some more text.</p>
</body>
</html>


说明:

<img:匹配必须从此开始。
[^>]:在开始比赛之后,下一个字符可能是除了&gt;之外的任何字符 +:一次或多次出现 g:全球申请,第一场比赛不返回 $1:与第一个捕获组一样(=第一组括号之间的东西) 。

请注意,无论doctype如何,Firebug都不会显示结束斜杠。但是你可以在这里看到正则表达式脚本:http://regex101.com/r/zS2zO1