Javascript 在代码标记之外转义黑名单html标记

Javascript 在代码标记之外转义黑名单html标记,javascript,regex,Javascript,Regex,我有一个(白色)标签列表,允许在code标签之外使用html。对于在标记中编写的任何html,我想在javascript中使用正则表达式将字符替换为<;和62英镑 因此符号应该在粗体中替换,而不是标记本身-它们应该保留为html 我不想允许标记位于块之外,因此我的白名单中不会有“script”。如果脚本标记在代码标记内,则应进行ascii替换 这与RTE在stackoverflow上的工作方式非常相似 我需要使用javascript+regex在客户端完成这项工作。任何帮助都将不胜感激 谢

我有一个(白色)标签列表,允许在
code
标签之外使用html。对于在
标记中编写的任何html,我想在javascript中使用正则表达式将字符替换为<;和62英镑

因此
符号应该在
粗体
中替换,而不是
标记本身-它们应该保留为html

我不想允许
标记位于
块之外,因此我的白名单中不会有“script”。如果脚本标记在代码标记内,则应进行ascii替换

这与RTE在stackoverflow上的工作方式非常相似

我需要使用javascript+regex在客户端完成这项工作。任何帮助都将不胜感激


谢谢

基本上你可以这样做

function changeCode() {
    var codeTags = document.getElementsByTagName('code');
    for(var i = 0; i < codeTags.length; i++) {
        var current = codeTags[i];
        current.innerHTML = current.innerHTML.replace(/</g, "&#60;").replace(/>/g, "&#62;");
    }
}
window.onload = changeCode; //executes after the DOM is ready

使用正则表达式解析HTML(或XML)不是一个好主意。您需要一个真正的标记解析器。那么包含
作为其代码一部分的
标记呢?不要使用regexp解析HTML(spoiler:你不能)我看到了这一点,但我的查询是基于代码标记的,我需要使用regex来区分不同类型文本的规则。。大家都知道,我也可以使用解析器:)谢谢你们回答我的问题,不像其他人:)
    for(var i = 0; i < codeTags.length; i++) {
        var current = codeTags[i];
        if (current.className.indexOf('someclass') !== -1 || current.name !== 'somename') continue;
        current.innerHTML = current.innerHTML.replace(/</g, "&#60;").replace(/>/g, "&#62;");
    }