Javascript 除去最后一行以外的所有尾随空格
假设我有一个字符串:Javascript 除去最后一行以外的所有尾随空格,javascript,regex,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" \s也匹配换行符。所以我建议你使用下面的方法 str.replace(/[ \t]+$/gm, "") 或 m当正则表
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, "")
或
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, '')
(From)结尾是否总是有换行符?如果没有换行符,您想添加一个吗?谢谢您的回答,但我想删除除
\n
之外的所有空白字符,而不仅仅是``和\t
,我使用了我的答案(见上文)。我选择这个作为正确答案,因为@hwnd的答案虽然简短,但不起作用(见我的评论)。即使添加了一个组,它也与这个答案非常相似,这稍微好一些,因为它使用了一个更干净的非捕获组。不是用“^”和“$”表示字符串的开头和结尾,而是表示行的开头和结尾。@QPaysTaxes这是一个拼写错误。。谢谢
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, '')