我需要一個regrex來替換逗號是兩個字符之間沒有空格。正則表達式來替換隻有某些逗號
文字:荷馬,辛普森,傑克,丹尼爾斯,NICK,凱奇
期望的結果:荷馬,辛普森 - 傑克,丹尼爾斯 - NICK,凱奇
這是我能想出的,但它取代信件以及逗號
/[a-zA-z],[a-zA-z]/
我需要一個regrex來替換逗號是兩個字符之間沒有空格。正則表達式來替換隻有某些逗號
文字:荷馬,辛普森,傑克,丹尼爾斯,NICK,凱奇
期望的結果:荷馬,辛普森 - 傑克,丹尼爾斯 - NICK,凱奇
這是我能想出的,但它取代信件以及逗號
/[a-zA-z],[a-zA-z]/
"HOMER, Simpson,JACK, Daniels,NICK, Cage".replace(/(,(?!\s))/g, ' - ');
http://jsfiddle.net/samliew/sQKNN/
如果你還需要檢查一個逗號前前導空格,
.replace(/((?!\s),(?!\s))/g, ' - '))
他想用' - '替代,而不是',' – tessi 2013-04-23 15:26:52
閱讀得太快。更新了答案。 – 2013-04-23 15:29:47
在正則表達式,\S
代表所有非空格字符。
var input = "HOMER, Simpson,JACK, Daniels,NICK, Cage";
var output = input.replace(/(\S),(\S)/g, '$1 - $2');
嘗試
'HOMER, Simpson,JACK, Daniels,NICK, Cage'.replace(/([^\s]),([^\s])/gi, '$1 - $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
也不會匹配製表符或換行符。
研究積極/消極的預見。 – 2013-04-23 15:24:53