使用正则表达式定位换行符之前的空格

问题描述 投票:0回答:2

我想删除符号后面的注释和行尾的空格,所以我的代码如下所示

function solution(input, markers) {
   let regexp = new RegExp("["+ markers.join('') + "].*","gi")
   let removeWhiteSpace = input.replace(regexp,"")
   return removeWhiteSpace.replace(/\s+$/g,"")
};

我有一个像下面这样的字符串

console.log(solution("苹果、李子 % 和香蕉 梨 橙子!苹果酱",["%", "!"]))

我很难在不影响其他空白的情况下定位“李子”后面的空白。我可以在这个正则表达式中改进什么来定位该空白。

javascript regex comments whitespace
2个回答
0
投票

您的代码所做的是匹配“%”或“!”之后的所有内容然后替换字符串末尾的空格。 如果您尝试删除标记中的符号并去除字符串末尾的任何额外空格,那么您可以用一行代码来完成此操作:

let regex = /(?:[%!]+\s*|\s*$)/gm
input.replace(regex, "")

正则表达式:/(?:[%!]+\s*|\s*$)/gm

(?:          Non capture group
  [%!]+\s*   zero or more spaces that follow one or more symbols (from marker var) 
  |          OR
   \s*$       zero or more spaces at the end of the input string
)

0
投票

要删除空格,您可以尝试此代码

function solution(input, markers) {
      const reg = new RegExp("["+ markers.join('') + "].*","gi")
      const lines = input.split('\n');
      const processedLines = lines.map(line => line.replace(reg, '').trim());
      return processedLines.join('\n');
    };

我们从文本中删除注释和多余空格。

© www.soinside.com 2019 - 2024. All rights reserved.