【问题标题】:Trying to replace html tags using regex尝试使用正则表达式替换 html 标签
【发布时间】:2010-10-25 09:34:10
【问题描述】:

例如,我正在尝试替换

<script type='text/javascript'>some stuff</script>

与:

<div type='text/javascript'>some stuff</div>

我目前正在测试:

alert( o.replace( /(?:<\s*\/?\s*)(script)(?:\s*([^>]*)?\s*>)/gi ,'div') );

但我得到的是:

divsomestuffdiv

我怎样才能让它只替换“脚本”部分并保留其他标记和属性字符?

【问题讨论】:

    标签: javascript replace elements


    【解决方案1】:

    DOM 方法比正则表达式更适合这种情况。这样您就可以逻辑地操作文档而不是纯文本:

    var els = document.getElementsByTagName('script');
    for (var i = 0, el; el = els[i]; i++) {
        var new = document.createElement('div');
        new.type = el.type;
        el.parentNode.replaceChild(el, new);
    }
    

    【讨论】:

      【解决方案2】:

      一种天真的但可读的方法是在我想的两遍中完成它,第一次匹配并替换

      &lt;script

      分开

      &lt;div

      然后是另一个匹配的

      &lt;/script&gt;

      替换成

      &lt;/div&gt;

      【讨论】:

        【解决方案3】:

        您保留了开始和结束标记括号。所以试试这个:

        o.replace(/(<\s*\/?\s*)script(\s*([^>]*)?\s*>)/gi ,'$1div$2')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-06
          • 2012-04-27
          相关资源
          最近更新 更多