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, "<").replace(/>/g, ">");
}
}
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, "<").replace(/>/g, ">");
}