Javascript 替换加号、双引号和空格(由双引号包围的空格除外)

Javascript 替换加号、双引号和空格(由双引号包围的空格除外),javascript,regex,Javascript,Regex,我有这样的文本text+“”+getIncrementedNumber()。我想通过JavaScript将以下字符替换为空字符串:+,“和所有空格,除了用双引号括起来的空格。我想实现的输入和输出示例: 输入:text+“”+getIncrementedNumber() 输出:text getIncrementedNumber() 输入:text+“任意”+getIncrementedNumber() 输出:textWhateveRgetIncrementedNumber() 输入:text+“

我有这样的文本
text+“”+getIncrementedNumber()
。我想通过JavaScript将以下字符替换为空字符串:
+
和所有空格,除了用双引号括起来的空格。我想实现的输入和输出示例:

  • 输入:
    text+“”+getIncrementedNumber()

    输出:
    text getIncrementedNumber()

  • 输入:
    text+“任意”+getIncrementedNumber()

    输出:
    textWhateveRgetIncrementedNumber()

  • 输入:
    text+“Lorem ipsuM”+getIncrementedNumber()

    输出:
    textLorem ipsuMgetIncrementedNumber()

我正在尝试使用这些regexp:

  • sourceText.replace(/\+\s|\b)(.*?\b)/g')
    ,这将导致
    'text“getIncrementedNumber()”
  • sourceText.replace(/\+\s |\“(.*?\”)
    ,这将导致
    'textgetIncrementedNumber()'
因此,我在排除双引号之间的空格替换时遇到了一个问题。

您可以使用

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

var s='text+“Lorem ipsuM”+getIncrementedNumber();
s=s.replace(/\s*\+\s*”([^“]*)”\s*\+\s*/g,“$1”);
控制台日志您可以使用

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

var s='text+“Lorem ipsuM”+getIncrementedNumber();
s=s.replace(/\s*\+\s*”([^“]*)”\s*\+\s*/g,“$1”);
console.log;
您可以使用:

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

正则表达式分解:

  • [+”]
    :匹配
    +
  • |
    :或
  • [\t]+(?=(?:(?:(?:[^“]*”){2})*[^“]*$)
    :通过使用前向断言前面偶数个引号来匹配引号之外的空格或制表符
您可以使用:

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

正则表达式分解:

  • [+”]
    :匹配
    +
  • |
    :或
  • [\t]+(?=(?:(?:(?:[^“]*”){2})*[^“]*$)
    :通过使用前向断言前面偶数个引号来匹配引号之外的空格或制表符

是否有任何嵌套引号,转义或其他形式?不,没有嵌套或转义。在这种情况下,我将用
或其他不存在的内容替换所有带引号的空格,然后替换引号部分,然后将
转换为空格。将其拆分可以简化逻辑我需要双引号。是否有嵌套引号引号,转义还是其他?不,没有嵌套或转义。在这种情况下,我会用
或其他不存在的东西替换所有带引号的空格,然后替换引号部分,然后将
转换为空格。分解它可以简化逻辑我需要双引号。谢谢。为什么
“$1使用“
而不是将“
作为替换值”
“$1”
对应于正则表达式中括号之间匹配的内容,否则引号之间的部分将丢失。现在保留下来了,谢谢。为什么使用
“$1”
而不是仅使用
作为替换值?
“$1”
对应于正则表达式中括号之间匹配的内容,否则引号之间的部分将丢失。现在它被保留了下来。