4

我需要一个正则表达式来替换逗号在两个没有空格的字符之间。

文字:荷马、辛普森、杰克、丹尼尔斯、尼克、凯奇

期望的结果:本垒打、辛普森-杰克、丹尼尔斯-尼克、凯奇

这是我能想到的,但它取代了字母和逗号

/[a-zA-z],[a-zA-z]/
4

4 回答 4

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

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

如果您还需要检查逗号前的前导空格,

.replace(/((?!\s),(?!\s))/g, ' - '))
于 2013-04-23T15:25:50.693 回答
3

在正则表达式中,\S表示所有非空格字符。

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

var output = input.replace(/(\S),(\S)/g, '$1 - $2');
于 2013-04-23T15:30:22.453 回答
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也不会匹配制表符或换行符。

于 2013-04-23T15:35:57.897 回答
1

尝试

'HOMER, Simpson,JACK, Daniels,NICK, Cage'.replace(/([^\s]),([^\s])/gi, '$1 - $2');
于 2013-04-23T15:33:09.217 回答