除去上一个新行之外的所有尾随空格

时间:2015-02-07 01:24:14

标签: javascript regex

说我有一个字符串:

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

如何使用''替换所有尾随空白字符,但上一个\n除外?

我试过了:

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

但是返回

"I am a\nmultiline\nString."

我想要像

这样的东西
"I am a\nmultiline\nString.\n"

2 个答案:

答案 0 :(得分:0)

\s也会匹配换行符。所以我建议你使用下面的内容。

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

OR

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'

答案 1 :(得分:0)

我最终使用@ 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