说我有一个字符串:
var str = 'I am a \nmultiline \nString.\n'
如何使用''
替换所有尾随空白字符,但上一个\n
除外?
我试过了:
str.replace(/\s+$/gm, '')
但是返回
"I am a\nmultiline\nString."
我想要像
这样的东西"I am a\nmultiline\nString.\n"
答案 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)