2011-08-16 16 views
8

Ho cercato un equivalente js per la funzione PHP preg_replace e quello che ho trovato finora è semplicemente string.replace.equivalente JavaScript per PHP preg_replace

Tuttavia non sono sicuro di come convertire la mia espressione regolare in JavaScript. Questo è il mio codice PHP:

preg_replace("/()*/", $str, $str); 

Così, per esempio il seguente:

test test test test 

diventa:

test-test-test-test 

Qualcuno sa come posso fare questo in JavaScript?

risposta

16
var text = 'test test test test', 
    fixed; 
fixed = text.replace(/\s+/g, '-'); 
+0

Funziona come un incantesimo, grazie! – Skyfe

0

Vedere javascript replace riferimento funzione.

Nel tuo caso è qualcosa di simile

var result = str.replace(/\s+/g, '-'); 

Ma che sostituisce un solo spazio. Lavorando su di esso ora :)

+1

Needs a '/ G' per la sostituzione globale –

+0

e deve essere sostituito con ''-'', non'' ''. – mellamokb

0

In JavaScript, si dovrebbe scrivere come:

result = subject.replace(/ +/g, "-"); 

A proposito, sei sicuro che hai postato il codice PHP giusto? Sarebbe piuttosto essere:

$result = preg_replace('/ +/', '-', $str); 
+0

In questo caso non ha importanza se è '() *' o '(*)' perché non è necessario il contenuto del gruppo di cattura, quindi non sono necessarie le parentesi: 'risultato = subject.replace (/ */g, "-"); 'farà esattamente lo stesso. – stema

+0

Penso che dovresti usare '+' invece di '*:: vuoi abbinare uno o più spazi, non zero o più. Non ho provato questo, ma altrimenti potrebbe produrre '-t-e-s-t-t-e-s-t-t-e-s-t-t-e-s-t-' –

3

javascript funzione String.Replace prende anche un'espressione regolare:

"test test test test".replace(/ +/,'-'); 

http://jsfiddle.net/5yn4s/