正则表达式替换标签内的字符

时间:2013-06-12 12:35:41

标签: javascript jquery regex

我已经在使用html解析器了,但我需要创建一个正则表达式来选择&lt;和&gt; <code>标签的第一个实例中的符号 - 在本例中为具有“html”类的标签。

    <code class="html">
        <b>test</b><script>lol</script>
            <code>test</code> <b> test </b>
        <lol>
                        </lol>

            <test>
    </code>

所以每个&lt;或者&gt;应该替换从<b>开始到最后</code>开头的缩进区域,只留下外部<code>标记。

我正在使用javascript的.replace方法,并希望所有&lt;和&gt;代码区域内的符号变成ascii&amp;#60;和&amp;#62;。

我想最好使用$ 1等前瞻/后退正则表达式,但无法弄清楚从哪里开始,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

这样的事情怎么样?在这个例子中,我正在创建一个变量并用html填充变量,只是为了让事情开始

var doc = document.createElement( 'div' );
doc.innerHTML =  ---your input html here

我在这里拉代码标签

var string = doc.getElementsByTagName( 'code' ).innerHTML; 

获得字符串后,只需用

替换所需的括号即可
var string = string .replace(/[<]/, "&#60;)
var string = string .replace(/[>]/, "&#62;)

然后只需将替换后的值重新插入源html

答案 1 :(得分:0)

简单方法:

var elem = $('.html');
elem.text(elem.html());

这不一定会使用字面&#60;进行转义;如果你对不同的逃避感觉很好,那么它比你能做的任何其他事情都要简单得多。

如果您有多个这样的元素,则可能需要将第二行包装在elem.each()中;否则html()方法可能只是连接所有元素的内容或类似的无意义的内容。