如何逃避",<以及JavaScript中的所有特殊字符

时间:2018-01-08 13:55:25

标签: javascript html escaping

如何在javaScript中转义所有特殊字符。

我们正在使用它,但它不起作用:

<input type = "text" value="' }{ " : ? > < \ ] [ ' ; / . ,">

3 个答案:

答案 0 :(得分:5)

您只需与"交换&quot;

一个好主意是采用更多HTML实体:

  • <替换为&lt;
  • >替换为&gt;

<input type = "text" value="' }{ &quot; : ? &gt; &lt; \ ] [ ' ; / . ,">

答案 1 :(得分:1)

通过使用浏览器DOM,您可以让浏览器为您完成工作。

创建一个HTML节点,向其附加一个文本节点,并在文本节点中放入您想要转义的html代码。 仅对于双引号,您可能需要将其替换为&quot;并将单引号替换为&#39;

function htmlspecialchars(str) {
  var div = document.createElement('div');
  var text = document.createTextNode(str);
  div.appendChild(text);
  return div.innerHTML.replace(/"/g,'&quot;').replace(/'/g,'&#39;');
}

console.log(htmlspecialchars("<html>"));
console.log(htmlspecialchars("<!DOCTYPE=\"RUBBISH\">"));
console.log(htmlspecialchars("' }{ \" : ? > < \\ ] [ ' ; / . ,"))

答案 2 :(得分:0)

您要么尝试将以下内容转义为HTML属性值,要么转换为JavaScript字符串

<input type="text" value="' }{ " : ? > < \ ] [ ' ; / . ,">

作为HTML属性值,以下

value=

可以通过在<input type="text" value="' }{ &quote; : ? > < \ ] [ ' ; / . ,">

之后转义双引号来修复
&quote;

"将呈现为&gt;字符。

理想情况下,您还应该转义所有HTML保留字符(&gt;和&lt;分别成为&lt;<input type="text" value="' }{ &quote; : ? &gt; &lt; \ ] [ ' ; / . ,">

' }{ " : ? > < \ ] [ ' ; / . ,

作为JavaScript字符串

无论您使用单引号分隔符(&#39;)还是双引号分隔符(&#34;&#34;)

,字符串var str = '\' }{ " : ? > < \ ] [ \' ; / . ,'; 必须以不同方式进行转义 单引号
var str2 = "' }{ \" : ? > < \ ] [ ' ; / . ,";
双引号
{{1}}