2013-04-23 47 views
4

我需要一個regrex來替換逗號是兩個字符之間沒有空格。正則表達式來替換隻有某些逗號

文字:荷馬,辛普森,傑克,丹尼爾斯,NICK,凱奇

期望的結果:荷馬,辛普森 - 傑克,丹尼爾斯 - NICK,凱奇

這是我能想出的,但它取代信件以及逗號

/[a-zA-z],[a-zA-z]/ 
+0

研究積極/消極的預見。 – 2013-04-23 15:24:53

回答

3
"HOMER, Simpson,JACK, Daniels,NICK, Cage".replace(/(,(?!\s))/g, ' - '); 

http://jsfiddle.net/samliew/sQKNN/

如果你還需要檢查一個逗號前前導空格,

.replace(/((?!\s),(?!\s))/g, ' - ')) 
+0

他想用' - '替代,而不是',' – tessi 2013-04-23 15:26:52

+0

閱讀得太快。更新了答案。 – 2013-04-23 15:29:47

3

在正則表達式,\S代表所有非空格字符。

var input = "HOMER, Simpson,JACK, Daniels,NICK, Cage"; 

var output = input.replace(/(\S),(\S)/g, '$1 - $2'); 
1

嘗試

'HOMER, Simpson,JACK, Daniels,NICK, Cage'.replace(/([^\s]),([^\s])/gi, '$1 - $2'); 
2

這不是太難以實現。

  • \S字符類表示所有非空白字符。
  • 您可以使用括號()來捕獲。在替換字符串中,您可以參考$0(代表整個匹配),$1(代表第一組),$2$3等代表後續組的每個捕獲組。

下面的代碼你想要做什麼:

var input = "HOMER, Simpson,JACK, Daniels,NICK, Cage" 
, output = input.replace(/(\S),(\S)/g, '$1 - $2'); 

請注意,由於\s[ \t\r\n]的當量(即以下任意字符:空格,製表符,CR [回車],LF [換行]),並且\S\s相反,\S也不會匹配製表符或換行符。