Помогите с регулярным выражением замены каждой второй запятой в строке - PullRequest
8 голосов
/ 20 мая 2009

У меня есть строка, которая выглядит следующим образом ....

1235, 3, 1343, 5, 1234, 1

Мне нужно заменить каждую вторую запятую точкой с запятой

т.е.

1235,3; 1343, 5; 1234, 1

длина строки всегда будет отличаться, но будет следовать той же схеме, что и выше, то есть цифры запятая, цифры запятая и т. Д.

как я могу сделать это с помощью JavaScript? Возможно ли это?

Спасибо, Mike

Ответы [ 6 ]

8 голосов
/ 20 мая 2009
'1235, 3, 1343, 5, 1234, 1'.replace(/([0-9]+),\s([0-9]+),\s/g, '$1, $2; ')
7 голосов
/ 20 мая 2009
var s = '1235, 3, 1343, 5, 1234, 1';
var result = s.replace(/(,[^,]*),/g,"$1;");
4 голосов
/ 20 мая 2009
var s='1235, 3, 1343, 5, 1234, 1';

s=s.replace(/([^,]+,[^,]+),/g,'$1;')

соответствует всему, что не является запятой, за которой следует запятая, за ним следует все, что не является запятой и запятой.

замените что-либо внутри паренов (без последней запятой) на себя ('$ 1') и добавьте точку с запятой вместо этой запятой.

3 голосов
/ 20 мая 2009

Как насчет:

var regex = /(\d+),\s(\d+),\s/g;
var str = '1235, 3, 1343, 5, 1234, 1'; 
alert(str.replace(regex, '$1, $2; ')); // 1235, 3; 1343, 5; 1234, 1
2 голосов
/ 20 мая 2009
var myregexp = /(\d+,\s\d+),/g;
result = subject.replace(myregexp, "$1;");
0 голосов
/ 20 мая 2009

var foo = "1235,3,1343,5,1234,1".replace(/(.\*?),(.\*?),/g, "$1,$2;");

console.log(foo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...