2013-03-14 184 views
0

我有一個變量看起來像這樣:正則表達式替換逗號

var name = 'John, Doe'; 

這個名字可以這樣表示過:

var name = 'john , doe'; 

var name = 'john ,doe'; 

甚至

var name = 'john , doe'; 

在所有出現,我想使名稱落得這樣的:

var name = 'john*doe'; 

我已經違背了DRY原則,通過做這樣的事情:

name= name.replace(' ,', '*'); 
name= name.replace(', ', '*'); 
name = name.replace(',', '*'); 

這甚至沒有考慮到額外的空白。有我可以申請照顧這個正則表達式模式嗎?

感謝

回答

2

您可以清晰做[]以下

name = name.replace(/[ ]*,[ ]*/, '*'); 

我已經把空間。

請注意,JavaScript中的正則表達式需要在其周圍使用/。該模式匹配0或1空格,然後匹配逗號,然後匹配0或1空格。


如果可以有標籤也可以使用\s而不是空格。 \s將匹配任何類型的空間。所以:

name = name.replace(/\s*,\s*/, '*'); 
+1

什麼標籤?改用'\ s'。 '''會匹配0或1次出現 – Zeta 2013-03-14 18:29:39

+0

@Zeta我剛剛注意到這個問題在我第一次回答的時候被編輯過。 – 2013-03-14 18:33:09

4

請嘗試以下方法嗎?

name = name.replace(/\s*,\s*/, '*'); 

@ BERGI的答案還增加了g標誌來捕獲所有逗號(含空格),所以根據您的輸入,可正常工作。