除去最后一行以外的所有尾部空白

Strip all trailing whitespace except last new line

本文关键字:空白 尾部 一行 最后      更新时间:2023-09-26

假设我有一个字符串:

var str = 'I am a 'nmultiline   'nString.'n'

如何用''替换除最后一个'n之外的所有尾随空白字符?

我试过:

str.replace(/'s+$/gm, '')

但这会返回

"I am a'nmultiline'nString."

我想要一些类似的东西

"I am a'nmultiline'nString.'n"

's也匹配换行符。所以我建议你使用下面的。

str.replace(/[ 't]+$/gm, "")

str.replace(/(?:(?!['r'n])'s)+$/gm, "")

当正则表达式使用锚点时,必须使用m多行修饰符。上面的正则表达式匹配最后一个或多个空格字符中的任何一种,但不匹配换行符或回车符。

示例:

> var str = 'I am a 'nmultiline   'nString.'n';
undefined
> str.replace(/[ 't]+$/gm, "")
'I am a'nmultiline'nString.'n'

我最终使用了@AvinashRaj答案的变体,因为我想删除所有空白(同样,除了'n),而不仅仅是't:

str.replace(/[ 'f'r't'v​'u00a0'u1680​'u180e'u2000​'u2001'u2002​'u2003'u2004'u2005'u2006​'u2007'u2008​'u2009'u200a​'u2028'u2029​'u202f'u205f​'u3000]+$/gm, '')

(来自MDN)