求一个可以去掉字符串中任何不包含<p>、<P>、<\p>、<\P>等标签的所有其他标签的正则表达式。
我开始是用replace(\/<[^(p|P)]+/>\,"");但是对下面这个字符串<p><strong>sdfjsldkjglskdjfls</strong></p>的操作结果却是<p></p> 请问这是怎么回事

解决方案 »

  1.   


    //try it.
    var regex=/<\/?p[^>]*>/ig;
      

  2.   

    一个正则解决不了,要两个才行<script>
    var str_1='<p> <strong>sdfjsldkjglskdjfls </strong> </p>';
    var str_2='<p>sdfjsldkjglskdjfls</p>';
    var str_3='<p>sdfjsldkjglskdjfls<br />dddddddddddddddddddd</p>';
    var str_4='<p><div>sdfjsldkjglskdjfls</div><br /><div><span>dddddddddddddddddddd</span></div></p>';
    var str_5='<div>sdfjsldkjglskdjfls</div><br /><div><span>dddddddddddddddddddd</span></div>';
    function Rep(temp) {
    if(/<[pP]>(.*)<\/[pP]>/.test(temp)) {
    var tmp = RegExp.$1;
    tmp = tmp.replace(/<[^>]*>/g,"");
    return "<p>"+tmp+"</p>";

    else return "";
    }alert("str_1:\t"+Rep(str_1)+"\nstr_2:\t"+Rep(str_2)+"\nstr_3:\t"+Rep(str_3)+"\nstr_4:\t"+Rep(str_4)+"\nstr_5:\t"+Rep(str_5))
    </script>
      

  3.   

    <!--求一个可以去掉字符串中除<p>、 <P>、 <\p>、 <\P>等标签的意外的其他标签的正则表达式。 
    我开始是用replace(\/ <[^(p|P)]+/>\,"");但是对下面这个字符串 <p> <strong>sdfjsldkjglskdjfls </strong> </p>的操作结果却是 <p> </p> 请问这是怎么回事-->
    <html>
    <script>
    var str_1='<p> <strong>sdfjsldkjglskdjfls </strong> </p>';
    var str_2='<p>sdfjsldkjglskdjfls</p>';
    var str_3='<p>sdfjsldkjglskdjfls<br />dddddddddddddddddddd</p>';
    var str_4='<p><div>sdfjsldkjglskdjfls</div><br /><div><span>dddddddddddddddddddd</span></div></p>';
    var str_5='<div>sdfjsldkjglskdjfls</div><br /><div><span>dddddddddddddddddddd</span></div>';function Rep(temp) {
        if(/<p>(.*)<\/p>/gi.test(temp)) {
            var tmp = RegExp.$1;
            tmp = tmp.replace(/<[^>]*>/g,"");
            return "<p>"+tmp+"</p>";
        } 
        else return "";
    }alert("str_1:\t"+Rep(str_1)+"\nstr_2:\t"+Rep(str_2)+"\nstr_3:\t"+Rep(str_3)+"\nstr_4:\t"+Rep(str_4)+"\nstr_5:\t"+Rep(str_5))
    </script>
    <html>