【问题标题】:Trim trailing spaces before newlines in a single multi-line string in JavaScript在 JavaScript 中的单个多行字符串中修剪换行符之前的尾随空格
【发布时间】:2011-04-06 15:19:30
【问题描述】:

假设我有这个单个字符串,这里我用 ^ 表示空格(“”)

^^quick^^^\n
^brown^^^\n
^^fox^^^^^\n

使用 .replace() 删除尾随空格的正则表达式是什么? 使用replace(/\s+$/g, "") 并不是很有帮助,因为这只会删除空格 在最后一行加上“狐狸”。

通过其他问题,我发现replace(/\s+(?:$|\n)/g,"") 匹配正确的部分 但也摆脱了换行符,但我确实需要它们。

所以完美的结果将是:

^^quick\n
^brown\n
^^fox\n

(仅删除尾随空格,其他所有内容都保留)

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    添加'm' 多行修饰符。

    replace(/\s+$/gm, "")
    

    或者更快...

    replace(/\s\s*$/gm, "")
    

    为什么这样更快?见:Faster JavaScript Trim

    附录: 上述表达式具有压缩相邻换行符的潜在不良影响。如果这不是所需的行为,则首选以下模式:

    replace(/[^\S\r\n]+$/gm, "")
    

    2013 年 11 月 17 日编辑: - 添加了不压缩连续换行符的替代模式。 (感谢 dalgard 指出这个缺陷。)

    【讨论】:

    • 似乎有将多个换行符减少到一个的不良副作用?
    • @dalgard - 你是对的。现在,答案已更新为没有这种不利影响的替代模式。感谢您指出这一点!
    • 如果我想在replace(/[^\S\r\n]+$/gm, "") 中包含前导空格怎么办?
    • @leonard vertighel - 这个应该可以解决问题:replace(/^[^\S\r\n]+|[^\S\r\n]+$/gm, "")
    猜你喜欢
    • 1970-01-01
    • 2011-11-11
    • 2015-08-01
    • 2014-01-03
    • 1970-01-01
    • 2014-10-30
    • 2016-10-11
    • 2011-06-03
    • 2022-08-14
    相关资源
    最近更新 更多