Javascript 双逃逸角手镯和符号

Javascript 双逃逸角手镯和符号,javascript,Javascript,我在项目中申请,我需要在客户端和服务器上转义: 函数替换标签(标签){ var tagsToReplace={ “&”:“&;”, "": "" }; return tagsToReplace[tag]| | tag; } 功能安全标签替换(str){ var self=这个; 返回str.replace(/[&]/g,self.replaceTag); } var结果=安全标签替换(“>”); 结果=安全标签替换(结果); 控制台日志(结果)尝试此正则表达式: /[<>]|

我在项目中申请,我需要在客户端和服务器上转义:

函数替换标签(标签){
var tagsToReplace={
“&”:“&;”,
"": ""
};
return tagsToReplace[tag]| | tag;
}
功能安全标签替换(str){
var self=这个;
返回str.replace(/[&]/g,self.replaceTag);
}
var结果=安全标签替换(“>”);
结果=安全标签替换(结果);
控制台日志(结果)尝试此正则表达式:

/[<>]|&(?!amp;|gt;|lt;)/g
/[]|&(?!amp;| gt;| lt;)/g
像这样使用它:

str.replace(/[<>]|&(?!amp;|gt;|lt;)/g, self.replaceTag);
str.replace(/[]|&(?!amp;| gt;| lt;)/g,self.replaceTag);

这里没有必要重新发明轮子。如果只需要显示文本而不呈现HTML,请使用如下内置转义机制:

str.replace(/[<>]|&(?!amp;|gt;|lt;)/g, self.replaceTag);
var
input=document.getElementById('input'),
chat=document.getElementById('chat');
input.addEventListener('keypress',函数(事件){
if((event.keyCode | | event.which)==13){
var msg=document.createElement('div');
msg.textContent=input.value;
//appendChild(document.createTextNode(input.value));
input.value='';
appendChild(msg);
}
});


为什么您认为需要调用
安全标签\u替换
两次?这就是为什么有双重转义…?首先,为什么您认为客户端和服务器都需要双重转义?通常情况下,您只能在服务器上处理此问题。@PatrickRoberts这是聊天应用程序,发送者也应该在屏幕上显示消息,但如果它被黑客攻击,那么我也应该在服务器上逃逸。如果只是为了呈现,在服务器端执行此操作的目的是什么?在客户端显示消息,分配给
元素.textContent
或使用
文档.createTextNode()
,则无需执行此操作。@asdf\u enel\u hak在
str.replace
中使用此正则表达式,我已更新代码。只有在后面没有
amp
gt
lt