說我有一個字符串:地帶的所有尾隨空白,除了最後一個新行
var str = 'I am a \nmultiline \nString.\n'
我怎麼能代替所有的尾部空格與''
,除了最後\n
?
我曾嘗試:
str.replace(/\s+$/gm, '')
但返回
"I am a\nmultiline\nString."
,我想有像
"I am a\nmultiline\nString.\n"
說我有一個字符串:地帶的所有尾隨空白,除了最後一個新行
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, "")
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'
感謝您的回答,但我想刪除除\ n之外的所有空格字符,而不僅僅是''和'\ t',我使用了我的答案(參見上文)。 – 2015-02-07 01:36:43
我選擇這個作爲@ hwnd的答案的正確答案,雖然簡短,不起作用(請參閱我的評論)。即使添加了一個組,它也與這個答案相似,因爲它使用了一個更清晰的非捕獲組。 – 2015-02-07 01:59:58
小修正:m標誌是多行,不是乘數。而不是讓^和$表示字符串的開始和結束,它意味着行的開始和結束。 – 2015-02-07 03:38:29
我結束了使用@ 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 MDN)
看到我的更新.. – 2015-02-07 01:40:22
@AvinashRaj謝謝。這是一個更清潔。 – 2015-02-07 02:02:14
它會在最後總是換行嗎?如果它沒有換行符,你想添加一個嗎? – Barmar 2015-02-07 01:27:03