2009-05-20 11 views
8

Mam ciąg, który wyświetla tak ....Pomoc z regexp zastępując co drugi przecinek w ciągu

1235, 3, 1343, 5, 1234, 1

muszę wymienić każdy drugi przecinek średnikiem

tj

1235, 3; 1343, 5; 1234, 1

długość łańcuch zawsze będzie inny, ale będzie wykorzystywał ten sam wzór jak wyżej tj cyfr przecinkami cyfr space przecinkami itp

w jaki sposób mogę to zrobić z javascript? Czy to możliwe?

Dzięki, Mike

+2

Dziękuję wam bardzo, dowiedziałem się całkiem sporo z tych przykładów. –

Odpowiedz

8
'1235, 3, 1343, 5, 1234, 1'.replace(/([0-9]+),\s([0-9]+),\s/g, '$1, $2; ') 
+1

Jeśli chcesz szybko potwierdzić poprawność, wklej adres URL przeglądarki: javascript: alert ('1235, 3, 1343, 5, 1234, 1'.replace (/ ([0-9] +), \ s ([0-9] +), \ s/g, "1 $, 2 $;")) – Kam

3

Jak o:

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 
7
var s = '1235, 3, 1343, 5, 1234, 1'; 
var result = s.replace(/(,[^,]*),/g,"$1;"); 
+0

To jest poprawna taktyka Dmitri - nie wiesz, co masz na myśli –

+0

+1 Chociaż ta magia może użyć wyjaśnienia :) – Andomar

0

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

 
console.log(foo)

+0

Usunięto w dół po edycji , (. *?) czy mecz w stylu nongreedy ma rację? Więc to w zasadzie oznacza [^,] tutaj – Andomar

2
var myregexp = /(\d+,\s\d+),/g; 
result = subject.replace(myregexp, "$1;"); 
3
var s='1235, 3, 1343, 5, 1234, 1'; 

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

pasuje do wszystkiego, co nie jest przecinkiem, po przecinku, , po którym następuje wszystko, co nie jest przecinkiem, i przecinek.

Zamień wszystko wewnątrz paren (które nie zawiera ostatniego przecinka) na siebie ("$ 1") i dodaj średnik zamiast tego przecinka.