javascript - 引用未被转义字符替换

标签 javascript html regex

<分区>

我正在尝试编写一个 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);

\'

\"

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

在反斜杠旁边放置另一个反斜杠以指示文字反斜杠:

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

您还可以使用 String.raw 来避免输入两次反斜杠,但对于这么短的内容来说不值得这样做:

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

关于javascript - 引用未被转义字符替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58125904/

相关文章:

javascript - 如何在新窗口中编写 JavaScript (window.open())?

javascript - 如何将当前日期与另一个日期进行比较并在javascript中验证它

html - Opengraph W3C 有效吗?

javascript - 使用正则表达式仅解析 id

ruby-on-rails - 从 html 代码获取 youtube 视频 ID

javascript - AngularJS $q.all 超时

html - 纯 css 悬停显示另一个元素可能吗?

html - 如何摆脱这条线?

java - java 是否支持 if-then-else 正则表达式构造(Perl 构造)?

javascript - 将 Div 类附加到超链接类——然后在单击时克隆超链接并将其附加到容器