代码之家  ›  专栏  ›  技术社区  ›  Helder Sepulveda

JavaScript正则表达式替换修剪尾部空白

  •  0
  • Helder Sepulveda  · 技术社区  · 7 月前

    在执行正则表达式替换时遇到问题。。。

    图案 [ ]+$ 在VSCode编辑器中工作良好,但当我将其放入代码中时就不行了:

    data = `
    Hello      
     World
    test
    .
    `
    console.log(data.replace(/[ ]+$/, ""))

    如果我们运行该片段,我们可以看到regex没有进行替换

    刚想清楚问题出在哪里

    2 回复  |  直到 7 月前
        1
  •  2
  •   C3roe    7 月前

    ^ $ 锚定在测试字符串的起始和结束处。

    您需要添加 m flag,使它们在每行的基础上工作。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/multiline#description :

    这个 m 标志表示多行输入字符串应被视为多行。例如,如果 m 使用时, ^ $ 从仅在整个字符串的开头或结尾匹配更改为字符串中任何一行的开头或末尾。

    data = `
    Hello      
     World
    test
    .
    `
    console.log(data.replace(/[ ]+$/m, ""))
        2
  •  1
  •   Justinas    7 月前

    $ 匹配输入字符串的末尾。您需要添加 m 的RegEx标志 $ 改为匹配行尾:

    data = `
    Hello      
     World
    test
    .
    `
    console.log(data.replace(/ +$/m, ""))