【问题标题】:How to escape single quote within another string which contains single quote in javascript?如何在另一个包含javascript单引号的字符串中转义单引号?
【发布时间】:2014-05-21 17:23:06
【问题描述】:

您好,我想在另一个字符串中转义单引号。

我有以下字符串:

'I'm a javascript programmer'

在上面的字符串中,我需要转义单引号

预期的输出是:

'I\'m a javascript programmer'

我需要这个在 eval() 中处理。

字符串会是这样的......

"[['string's one','string two','string's three']]"

如何解决这个问题。提前谢谢...

【问题讨论】:

  • 最佳方法:找到不涉及使用eval的解决方案。
  • 我不确定您的要求是什么,因为您在问题中有答案。 ' 可以在 javascript 中转义,方法是用 "" 表示字符串或转义 'I\'m a javascript programmer' 中的引号
  • 你能展示一个更完整的例子来说明你在做什么吗?您已经有 3 个答案向您展示了您已经知道的内容,问题很可能在于您如何应用这些知识。
  • 我认为这是完整的。我需要在单引号字符串中转义单引号。
  • 对,VajNyiaj 的回答正确,但你声称它不起作用。

标签: javascript regex


【解决方案1】:
var s = "my string's"
s = s.replace(/'/g, "\\'");

【讨论】:

  • 对不起,我以前试过这个。不工作。它还在字符串的开头和结尾添加斜杠。
【解决方案2】:

在 html 字符串中转义引号的正确方法是使用字符实体。

'I'm a javascript programmer'

双引号也是如此:

'"I'm a javascript programmer"'

【讨论】:

  • 但是字符串来自服务器。如何处理。
  • 服务器可以为你转义。例如,Coldfusion/Railo 有一个 HTMLEditFormat 方法可以自动为您进行这些转换。
  • 但是我是从mysql查询本身用group concat方法得到的。
  • mysql 有一个替换方法,所以我想这是一个选项
【解决方案3】:

你可以试试lookahead assertions达到想要的效果:

var str = "'I'm a javascript's programmer'";
str = str.replace(/(?!^)'(?!$)/g, "\\'");

(Fiddle)。与 Shimon 的回答不同,这也可以处理双单引号 ('')。

负前瞻断言(?! )本身不会进行任何匹配,但它确保断言的表达式不会出现在给定位置(即字符串^的开头不会出现在引号和结尾之前字符串$ 不会出现在引号之后)。

【讨论】:

  • 它在浏览器中运行良好。但是是否有任何正则表达式可以处理这个问题?
【解决方案4】:

这可以解决问题:

var str = "'I'm a js programer.'";
str.replace(/(\w)'(\w)/g, "$1\\\'$2");

【讨论】:

  • 糟糕。它仅在第一个位置添加斜线。怎么去掉?
  • 对不起西蒙。它仍然在字符串末尾添加斜杠,但在第一个位置删除。
  • 奇怪,因为它对我有用.. 你能发布确切的测试字符串吗?
  • 对不起西蒙。我没有注意到你已经用 'w' 改变了正则表达式。
  • 哇。它工作得很好。简直太棒了。你帮了我很多。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多