使用正则表达式在javascript中的两个字符之间替换或剥离特定字符

时间:2018-12-19 19:26:40

标签: javascript regex

使用正则表达式在javascript中的两个字符之间替换特定字符

我的具体要求是

我想在双引号之间替换单引号。

例如:sdadads'sdasdads“这是'quote”-> sdadads'sdasdads“这是报价”

我尝试过

`sdadads'sdasdads"this is the 'quote"`.replace(/\"[^\']\"/g, 'replaced')

但输出是

sdadads'sdasdadsreplaced

3 个答案:

答案 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->重置到目前为止匹配的所有内容
  • '->匹配文字单引号
  • (?=[^']*")->请确保在零个或多个任何字符后都加上双引号,除了单引号

Live Demo