我需要一个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