我想用<li>
&amp;替换每个#
标记每个</li>
与<br />
我认为我需要一个全局重复功能,而不是简单的string.replace()
所以......
var s=obj1.innerHTML;
s = s.replace(/<li>/g,"# ");
s = s.replace(/</li>/g,"<br/>");
但它似乎没有起作用。有什么错吗?
编辑:我将使用博客中的代码&amp;这就是为什么需要解析的原因。这就是为什么你看到"
而不是"
。
答案 0 :(得分:20)
这样做: -
<强> LIVE DEMO 强>
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);
答案 1 :(得分:6)
obj1.innerHTML = obj1.innerHTML.replace(/<li>/g, '#').replace(/<\/li>/g, '<br>');
您只需要转义/
中的/li
,否则它将被视为正则表达式分隔符。
答案 2 :(得分:2)
对不起,但是如果li
标签具有某些属性(例如样式),您将拥有不需要的文本。对我来说,最简单的方法是使用像这样的正则表达式:
var regex = /(<li[^>]+>|<li>|<\/li>)/g;
s = s.replace(regex , ' ');
如果要剥离所有<tags> </tags>
(不仅是li标签),应执行以下操作:
var regex = /(<[^>]+>|<[^>]>|<\/[^>]>)/g;
s =s.replace(regex , ' ');
答案 3 :(得分:0)
这很好用:
<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/>');
答案 4 :(得分:-3)
如果您可以使用jQuery,这将对您有所帮助:
$("li").after("#<br/>").remove();