有但类似html代码,
<html>
<body>
<div><div><p>test,test,test<p/></div></div>
<a><a href="www.baidu.com">testtestest</a></a>
<p><p><p>test test test</p></p></p>
</body>
</html> 要把里面的 <div><div><p>test,test,test<p/></div></div> 替换成<div><p>test,test,test<p/></div>
<a><a href="www.baidu.com">testtestest</a></a> 替换成<a href="www.baidu.com">testtestest</a>
<p><p><p>test test test</p></p></p> 替换成 <p>test test test</p>有没有好的正则,或好的解决方法, 请大虾们指点
<html>
<body>
<div><div><p>test,test,test<p/></div></div>
<a><a href="www.baidu.com">testtestest</a></a>
<p><p><p>test test test</p></p></p>
</body>
</html> 要把里面的 <div><div><p>test,test,test<p/></div></div> 替换成<div><p>test,test,test<p/></div>
<a><a href="www.baidu.com">testtestest</a></a> 替换成<a href="www.baidu.com">testtestest</a>
<p><p><p>test test test</p></p></p> 替换成 <p>test test test</p>有没有好的正则,或好的解决方法, 请大虾们指点
//粗略的匹配了下
<script type="text/javascript">
<!--
var str='<html><body><div><div><p>test,test,test</p></div></div><a><a href="www.baidu.com">testtestest</a></a><p><p><p>test test test</p></p></p></body></html>';
var reg=/<[^>/]+?>(?:[^<>]*?)<\/[^>]+?>/g;
var arr = [];
while((result = reg.exec(str)) != null){
arr.push(result[0])
}
alert(arr)
//-->
</script>
<script>
var str = '<html>'
+'<body>'
+'<div><div><p>test,test,test<p/></div></div>'
+' <a><a href="www.baidu.com">testtestest</a></a>'
+' <p><p><p>test test test</p></p></p>'
+' </body>'
+'</html> ';var arr = ["div","a","p"];str = deleteDulti(str,arr);
alert(str);//删除重复标签
function deleteDulti(v,array){
var len = v.length;
for(var i=0;i<array.length;i++){
var re = eval("\/<("+array[i]+")\\b[^>]*><\\1\\b([^>]*)>(.*)<\\\/\\1><\\\/\\1>\/gi");
do{
len = v.length;
v = v.replace(re,"<$1 $2>$3</$1>");
}while(v.length!=len);
}
return v;
}
</script>
你感觉有可能会出现重复的标签就加入arr数组,传给函数,它会帮你处理的
LZ的需求应该是任意的吧^_^
var mat=/(<([^> \/]+)([^>\/]*)>)(<\2([^>]*)>)*(.*?)(<\/\2>)\7*/gvar str='<html><body><div><div id="adsfasdf"><p>test,test,test<p></div></div></div>\
<a><a href="www.baidu.com">testtestest</a></a>\
<p><p><p>test test test</p></p></p></body></html>';str=str.replace(/.*?<body[^>]*>(.*?)<\/body>.*/,'$1')var ret=str.replace(mat,function(z,a,b,c,d,e,f,g)
{ var attr=e || c;
attr=attr ? ' '+attr :'';
return '<'+b+attr+'>'+f+g
});
alert(ret)
<input type="Submit" value="处理" onclick="opt();"><br />
<textarea id="result" rows="10" cols="100"></textarea><br />
<script type="text/javascript">
function opt()
{
var str = document.getElementById("source").value;
var reg = /<([a-z]+)[^>]*>(?:\s*<\1([^>]*)>)+((?:(?!<\/\1\b)[\s\S])*)(\s*<\/\1>)+/;
do
{
len = str.length;
str = str.replace(reg,"<$1$2>$3</$1>");
}
while(str.length!=len);
document.getElementById("result").value = str;
}
</script>
<input type="Submit" value="处理" onclick="opt();"><br />
<textarea id="result" rows="10" cols="100"></textarea><br />
<script type="text/javascript">
function opt()
{
var str = document.getElementById("source").value;
var reg = /<([a-z]+)[^>]*>(?:\s*<\1([^>]*)>)+((?:(?!<\/\1\b)[\s\S])*)(\s*<\/\1>)+/ig;
do
{
len = str.length;
str = str.replace(reg,"<$1$2>$3</$1>");
}
while(str.length!=len);
document.getElementById("result").value = str;
}
</script>
<input type="Submit" value="处理" onclick="opt();"><br />
<textarea id="result" rows="10" cols="100"></textarea><br />
<script type="text/javascript">
function opt()
{
var str = document.getElementById("source").value;
var reg = /<([a-z]+)[^>]*>(?:\s*<\1([^>]*)>)+((?:(?!<\/\1\b)[\s\S])*)(\s*<\/\1>)+/ig;
do
{
len = str.length;
str = str.replace(reg,"<$1$2>$3</$1>");
}
while(str.length!=len);
document.getElementById("result").value = str;
}
</script>