11

我想用&替换每个<li>标签# </li><br />

我想我需要一个全局替换功能,而不是一个简单的string.replace()所以......

var s=obj1.innerHTML;

 s = s.replace(/<li>/g,&quot;# &quot;);
 s = s.replace(/</li>/g,&quot;<br/>&quot;);

但这似乎不起作用。有什么错误吗?

编辑:我将在 blogger 中使用代码,这就是为什么它需要被解析。所以这就是为什么你看到&quot;而不是".

4

5 回答 5

30

这样做: -

现场演示

var s="<div>hello world <br/><li>First LI</li><li>Second LI</li></div>";   
s = s.replace(/<li>/g, "#");  
s = s.replace(/<\/li>/g,"<br/>"); 
alert(s);
于 2012-05-30T12:22:55.773 回答
6
obj1.innerHTML = obj1.innerHTML.replace(/<li>/g, '#').replace(/<\/li>/g, '<br>');

您只需要转义/in/li否则它将被视为正则表达式分隔符。

于 2012-05-30T12:20:05.123 回答
5

抱歉,如果li标签有一些属性(如样式),您将获得不需要的文本。对我来说,最简单的方法是使用这样的正则表达式:

var regex = /(<li[^>]+>|<li>|<\/li>)/g;
s = s.replace(regex , ' ');

如果您想剥离所有<tags> </tags>(不仅是 li 标签),您应该执行以下操作:

var regex = /(<[^>]+>|<[^>]>|<\/[^>]>)/g;
s =s.replace(regex , ' ');
于 2018-08-30T02:39:50.200 回答
1

这工作得很好:

<html>
<head>
    <script type="text/javascript" src="http://streamed.in/static/js/jquery-1.4.1.min.js"></script>
    <script>
    $(document).ready(function(){
        var s = $('#obj1').html();
        s = s.replace(/<li>/g,'#');
        s = s.replace(/<\/li>/g,'<br/>');
        $('#obj1').html(s);
    });
    </script>
</head>
<body id="obj1">
    <li>omg 1</li>
    <li>omg 2</li>
    <li>omg 3</li>
    <li>omg 4</li>
</body>
</html>

或者您可以尝试将第二个替换行替换为:

s.replace(/<\/li>/g,'<br/>');
于 2012-05-30T12:25:18.987 回答
-4

如果您可以使用 jQuery,这将对您有所帮助:

$("li").after("#<br/>").remove();

于 2012-05-30T12:22:40.867 回答