替换加号,双引号和空格,但双引号括起的空格除外

时间:2017-11-21 20:33:40

标签: javascript regex

我有这样的文字text + " " + getIncrementedNumber()。我想通过JavaScript将以下字符替换为空字符串:+"以及之外的所有空格,这些空格由双引号括起来。我想要实现的输入和输出示例:

  • 输入:text + " " + getIncrementedNumber();

    输出:text getIncrementedNumber()

  • 输入:text + "WhateveR" + getIncrementedNumber();

    输出:textWhateveRgetIncrementedNumber()

  • 输入:text +"Lorem ipsuM"+ getIncrementedNumber();

    输出:textLorem ipsuMgetIncrementedNumber()

我正在尝试使用这些RegExps:

  • sourceText.replace( /\+|\s|\b"(.*?)\b"/g, '' ),结果为'text""getIncrementedNumber()'
  • sourceText.replace( /\+|\s|\"(.*?)\"/g, '' ),结果为'textgetIncrementedNumber()'

所以我在排除双引号之间的空格时遇到了问题。

2 个答案:

答案 0 :(得分:1)

您可以使用

/\s*\+\s*"([^"]*)"\s*\+\s*/g

段:



var s = 'text +"Lorem ipsuM"+ getIncrementedNumber()';
s = s.replace(/\s*\+\s*"([^"]*)"\s*\+\s*/g, "$1");
console.log(s);




答案 1 :(得分:1)

您可以使用:

str = str.replace(/[+"]|[ \t]+(?=(?:(?:[^"]*"){2})*[^"]*$)/gm, '');

RegEx Demo

RegEx分手:

  • [+"]:匹配+:
  • |:或
  • [ \t]+(?=(?:(?:[^"]*"){2})*[^"]*$):使用前瞻来匹配引号之外的空格或制表符,以确定前面引用的引号数。