代码之家  ›  专栏  ›  技术社区  ›  Chris92

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

  •  0
  • Chris92  · 技术社区  · 8 年前

    我有这样的文字 text + " " + getIncrementedNumber() . 我想通过JavaScript将以下字符替换为空字符串: + , " 和所有空间 除了 由双引号包围的空格。我想要实现的输入和输出示例:

    • 输入: 文本+“”+getIncrementedNumber() ;

      输出: text getIncrementedNumber()

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

      输出: textWhateveRgetIncrementedNumber()

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

      输出: textLorem ipsuMgetIncrementedNumber()

    我正在尝试使用这些正则表达式:

    • sourceText.replace( /\+|\s|\b"(.*?)\b"/g, '' ) ,这导致 'text""getIncrementedNumber()'
    • sourceText.replace( /\+|\s|\"(.*?)\"/g, '' ) ,这导致 'textgetIncrementedNumber()'

    所以我有一个问题,不包括替换双引号之间的空格。

    2 回复  |  直到 8 年前
        1
  •  1
  •   trincot    8 年前

    你可以用

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

    代码段:

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

    您可以使用:

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

    RegEx Demo

    正则表达式分解:

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