我需要一个regrex替换逗号是在两个没有空格的字符之间。
文字:HOMER,Simpson,JACK,Daniels,NICK,Cage
期望的结果:HOMER,Simpson - JACK,Daniels - NICK,Cage
这是我能想到的,但它取代了字母以及逗号
/[a-zA-z],[a-zA-z]/
答案 0 :(得分:3)
"HOMER, Simpson,JACK, Daniels,NICK, Cage".replace(/(,(?!\s))/g, ' - ');
http://jsfiddle.net/samliew/sQKNN/
如果您还需要在逗号之前检查前导空格,
.replace(/((?!\s),(?!\s))/g, ' - '))
答案 1 :(得分:3)
在正则表达式中,\S
表示所有非空格字符。
var input = "HOMER, Simpson,JACK, Daniels,NICK, Cage";
var output = input.replace(/(\S),(\S)/g, '$1 - $2');
答案 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 [换行])和{{1 }}是\S
的倒数,\s
也不会匹配制表符或换行符。
答案 3 :(得分:1)
尝试
'HOMER, Simpson,JACK, Daniels,NICK, Cage'.replace(/([^\s]),([^\s])/gi, '$1 - $2');