如何转义单引号?


188

如何'在JavaScript中转义(单引号)?

这是我尝试使用的地方:

<input type='text' id='abc' value='hel'lo'>

上面代码的结果在文本框中填充了“ hel”。我试图用\代替',但这就是我得到的。

<input type='text' id='abc' value='hel\'lo'>

上面代码的结果在文本框中填充了“ hel \”。

如何成功转义单引号?


嘿拉维,这更多是一个html问题。我将该问题重新标记为HTML,但您可能需要更改该问题。
本杰明·曼斯

Answers:


357

您可以使用HTML实体:

  • &#39; 对于 '
  • &#34; 对于 "
  • ...

有关更多信息,您可以看一下HTML中的Character实体引用


39
为什么对属性值使用双引号?
Gumbo 2010年

5
@Pascal MARTIN:XML还允许对属性值使用单引号。(见w3.org/TR/xml/#NT-AttValue
甘博

4
@浓汤:呜呜!我认为我从未见过任何使用单引号arround属性值的XML文档;所以我认为这实际上是不合法的;我只是(再次)在回答问题时学到了一些东西;因此,感谢您的评论!
Pascal MARTIN

5
我知道这很旧了,但我认为值得注意的是有一个HTML实体"&quot;
daiscog

1
@ Pascal,w3c验证程序显示单引号对属性有效。并查看stackoverflow.com/questions/2210430/…–
ChrisJJ

62

您可以使用&apos;(在IE中比较困难)或&#39;(应该可以在任何地方使用)。有关完整列表,请参见W3C HTML5命名字符引用WebPlatform.org上HTML实体表


哇,自从我写这篇文章已经有一段时间了。感谢您抓住它-我已经更新了W3C和WebPlatform.org上两个表的链接。
本杰明·曼恩斯

这些功能可在所有地方工作,但在VXML <var>表达式属性中则需要进一步转义,因为在VXML <var>中,字符串变量值在属性定义的常规双引号内表示为单引号:<var name =“ myvar” expr =“'hel \'lo'” />
史蒂夫·科恩

9

在HTML上下文中,您需要使用HTML来表示该字符。对于HTML,您需要使用数字字符引用 &#39;&#x27;十六进制):

<input type='text' id='abc' value='hel&#39;lo'>

但是我不明白你是什么意思context of html
2014年

@coding_idiot看一下HTML解析器在解析过程中可能遇到的不同标记。每个状态都有一组基于输入触发的不同解析规则。并非每个州都允许使用字符引用。现在,如果查看属性值(单引号),则可以看到a &表示字符引用的开始。
Gumbo 2014年

7

将其表示为文本实体(ASCII 39):

<input type='text' id='abc' value='hel&#39;lo'>

6

可能是最简单的方法:

<input type='text' id='abc' value="hel'lo">


-1

使用javascript内置函数转义和转义

例如

var escapedData = escape("hel'lo");   
output = "%27hel%27lo%27" which can be used in the attribute.

again to read the value from the attr

var unescapedData = unescape("%27hel%27lo%27")
output = "'hel'lo'"

如果您要在属性中使用大量json字符串化数据,这将很有帮助


escape不是Unicode安全的。该规范建议不要使用它。
昆汀
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.