我需要一个正则表达式来替换逗号在两个没有空格的字符之间。
文字:荷马、辛普森、杰克、丹尼尔斯、尼克、凯奇
期望的结果:本垒打、辛普森-杰克、丹尼尔斯-尼克、凯奇
这是我能想到的,但它取代了字母和逗号
/[a-zA-z],[a-zA-z]/
我需要一个正则表达式来替换逗号在两个没有空格的字符之间。
文字:荷马、辛普森、杰克、丹尼尔斯、尼克、凯奇
期望的结果:本垒打、辛普森-杰克、丹尼尔斯-尼克、凯奇
这是我能想到的,但它取代了字母和逗号
/[a-zA-z],[a-zA-z]/
"HOMER, Simpson,JACK, Daniels,NICK, Cage".replace(/(,(?!\s))/g, ' - ');
http://jsfiddle.net/samliew/sQKNN/
如果您还需要检查逗号前的前导空格,
.replace(/((?!\s),(?!\s))/g, ' - '))
在正则表达式中,\S
表示所有非空格字符。
var input = "HOMER, Simpson,JACK, Daniels,NICK, Cage";
var output = input.replace(/(\S),(\S)/g, '$1 - $2');
这并不难实现。
\S
所有非空白字符。()
来捕获一个组。在替换字符串中,您可以使用$0
(代表整个匹配)、$1
(代表第一个组)、$2
等来引用每个捕获的组$3
,代表后续组。以下代码执行您想要的操作:
var input = "HOMER, Simpson,JACK, Daniels,NICK, Cage"
, output = input.replace(/(\S),(\S)/g, '$1 - $2');
请注意,since\s
等价于[ \t\r\n]
(即以下任何字符:空格、制表符、CR [回车]、LF [换行符]),并且\S
是 的倒数\s
,\S
也不会匹配制表符或换行符。
尝试
'HOMER, Simpson,JACK, Daniels,NICK, Cage'.replace(/([^\s]),([^\s])/gi, '$1 - $2');