双逃逸角手链和&符号

时间:2016-01-25 08:55:18

标签: javascript

我在项目中应用了this answer,我需要在客户端和服务器上进行转义:



wc -l foo.txt | awk '{ print $1 }'




如何让特殊字符wc -l bar.txt | awk '{ print $1 }' 被&#34;转义&#34;到function replaceTag(tag) { var tagsToReplace = { "&": "&amp;", "<": "&lt;", ">": "&gt;" }; 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);而不是>

2 个答案:

答案 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="&lt;script&gt;alert('dangerous');&lt;/script&gt;"/>

Enter,看看会发生什么。 我敢。

答案 1 :(得分:-1)

试试这个正则表达式:

/[<>]|&(?!amp;|gt;|lt;)/g

像这样使用它:

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