2011-04-06 42 views
9

說我有這樣一個字符串,我在這裏表示空格(」「)與^修剪尾隨換行符之前的空間在一個多行字符串在JavaScript

^^quick^^^\n 
^brown^^^\n 
^^fox^^^^^\n 

什麼正則表達式用來刪除尾隨空格與.replace()? 使用replace(/\s+$/g, "")並不真正有幫助,因爲這隻會刪除最後一行中帶有「fox」的空格 。

通過其他問題我發現replace(/\s+(?:$|\n)/g,"")匹配正確的部分 ,但也擺脫了新的行字符,但我確實需要他們。

那麼完美的結果將是:

^^quick\n 
^brown\n 
^^fox\n 

(僅尾部的空格被刪除一切住宿)

回答

14

添加'm'多行修改。

replace(/\s+$/gm, "") 

或更快還是......

replace(/\s\s*$/gm, "") 

這是爲什麼快?請參閱:Faster JavaScript Trim

附錄:上述表達式具有壓縮相鄰換行符的潛在不良影響。如果這不是所期望的行爲然後將下面的圖案是優選的:

replace(/[^\S\r\n]+$/gm, "") 

編輯2013年11月17日: - 增加的替代形式,其不是連續壓縮換行符。 (感謝dalgard指出這個缺陷。)

+0

似乎有不必要的副作用,減少多個換行符到一個? – dalgard 2013-11-17 22:04:25

+0

@dalgard - 你是對的。答案現在更新爲不具有這種不利影響的替代模式。感謝您指出了這一點! – ridgerunner 2013-11-17 23:44:44

+1

如果我想在'replace(/ [^ \ S \ r \ n] + $/gm,「」)''中包含前導空格,那麼怎麼辦? – 2016-06-10 17:21:08

相關問題