我在项目中应用了this answer,我需要在客户端和服务器上进行转义:
wc -l foo.txt | awk '{ print $1 }'

如何让特殊字符wc -l bar.txt | awk '{ print $1 }'
被"转义"到function replaceTag(tag) {
var tagsToReplace = {
"&": "&",
"<": "<",
">": ">"
};
return tagsToReplace[tag] || tag;
}
function safe_tags_replace(str) {
var self = this;
return str.replace(/[&<>]/g, self.replaceTag);
}
var result = safe_tags_replace(">");
result = safe_tags_replace(result);
console.log(result);
而不是>
答案 0 :(得分:0)
这里没有必要重新发明轮子。如果您只需要在不呈现HTML的情况下显示文本,请使用内置的转义机制,如下所示:
var
input = document.getElementById('input'),
chat = document.getElementById('chat');
input.addEventListener('keypress', function(event) {
if ((event.keyCode || event.which) === 13) {
var msg = document.createElement('div');
msg.textContent = input.value;
// msg.appendChild(document.createTextNode(input.value));
input.value = '';
chat.appendChild(msg);
}
});
<div id="chat"></div>
<input id="input" type="text" value="<script>alert('dangerous');</script>"/>
按Enter
,看看会发生什么。 我敢。
答案 1 :(得分:-1)
试试这个正则表达式:
/[<>]|&(?!amp;|gt;|lt;)/g
像这样使用它:
str.replace(/[<>]|&(?!amp;|gt;|lt;)/g, self.replaceTag);