我想替换字符串中的简单引号,而不是转义的(在JavaScript中)。例如,我想要这个字符串:
'Hello there! I\'m \'Doug\''
成为:
"Hello there! I\'m \'Doug\'"
注意:我进行了大量的研究和测试(例如在regex101.com上)并发现了一些诸如Regular expression to match a line that doesn't contain a word?之类的内容,但仍无法弄清楚如何构建正确的正则表达式。
我试过的东西:
/[^\\]'/g
/\\{0}'/g
/[\\]{0}'/g
答案 0 :(得分:1)
您可以将此String#replace
与callback
功能一起使用:
str = "'Hello there! I\\'m \\'Doug\\''";
str = str.replace(/(\\)?'/g, function($0, $1) {
return ($1) ? "\\'" : '"';
});
console.log( str );
//=> "Hello there! I\'m \'Doug\'"
答案 1 :(得分:0)
这很接近:
subject.replace(/^'|([^\\])'/g, '$1"')
它不会连续捕获两个撇号,但我想你可以运行两次。
答案 2 :(得分:0)
不幸的是,javascript除了它的所有可移植性和强大功能外,还不支持外观。
我做了一个正则表达式,在有多个撇号的情况下运行良好:
^'|[^\\](')[']+|([^\\])'
替换为$1"
答案 3 :(得分:-1)
也许你只需要这个:
var text = "'Hello there! I'm \'Doug\''";
text.replace(/^\'|'$/g, '"')