问题

这个问题已经有一个答案:

  • 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 如何在字符串中使用backslashes(|)? 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 3个答案 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表
  • 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 Javascript 转义字符串中的所有单引号 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 1个答复 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表 2001年12月31日终了的两年期收入和支出及准备金和基金结余变动报表

我正在尝试编写一个JavaScript RegEx,它正确地将转义字符添加到字符串中的所有单引号和双引号字符.例如,如果我有以下字符串:

 "Hey, how's it going? You're really good at this!"
 

代码应该将该字符串转换为:

 "Hey, how\'s it going? You\'re really good at this!"
 

下面是我的代码:

 var testString = "Hey, how's it going? You're really good at this!";
testString = testString.replace(/'/g, '\'').replace(/"/g, '\"');
alert(testString);
 

引号目前没有被转义字符替换。

  最佳答案

问题是你

 .replace(/'/g, '\'')
.replace(/"/g, '\"');
 

替换字符串中仍然只有一个字符:

 const str1 = '\'';
const str2 = '\"';
console.log(str1, str2);
console.log(str1.length, str2.length); 
 \'
 

 \"
 

在字符串文字中只表示不必要的转义字符:\'不是转义序列(如 ),所以它相当于'.

在反斜杠旁边放置另一个反斜杠来表示文字反斜杠:

 testString.replace(/'/g, '\'').replace(/"/g, '\"');
 

您还可以使用String.raw避免必须两次键入后斜线,但对于这个简短的东西,它不值得:

 testString.replace(/'/g, String.raw`\'`).replace(/"/g, String.raw`\"`);
 

  相同标签的其他问题

javascripthtmlregex