使用正则表达式在javascript中的两个字符之间替换特定字符
我的具体要求是
我想在双引号之间替换单引号。
例如:sdadads'sdasdads“这是'quote”-> sdadads'sdasdads“这是报价”
我尝试过
`sdadads'sdasdads"this is the 'quote"`.replace(/\"[^\']\"/g, 'replaced')
但输出是
sdadads'sdasdadsreplaced
答案 0 :(得分:2)
您可以使用以下.replace
with a function:
var str = `"this 'is 'the 'quote"`
var repl = str.replace(/"[^"]*"/g, function($0) {
return $0.replace(/'/g, ""); });
console.log(repl);
//=> "this is the quote"
"..."
字符串答案 1 :(得分:1)
您可以捕获双引号本身以及捕获组中双引号之间的内容。然后使用替换功能,将第二个捕获组中的所有单引号替换为空字符串
(")([^"]+)(")
let str = `sdadads'sdasdads"this is the 'quote"`;
let res = str.replace(/(")([^"]+)(")/g, function(_, g1, g2, g3) {
return g1 + g2.replace("'", "") + g3;
});
console.log(res);
答案 2 :(得分:1)
JavaScript中不允许使用可变宽度负向后查找,因此您可以使用\ K运算符来查找'
是否在两个双引号之间,或者不使用此正则表达式,
"[^']*\K'(?=[^']*")
说明:
"
->匹配双引号[^']*
->匹配零个或多个字符(单引号除外)\K
->重置到目前为止匹配的所有内容'
->匹配文字单引号(?=[^']*")
->请确保在零个或多个任何字符后都加上双引号,除了单引号