2011-08-16 31 views
8

He estado buscando un equivalente js para la función PHP preg_replace y lo que encontré hasta ahora es simplemente string.replace.JavaScript equivalente para PHP preg_replace

Sin embargo, no estoy seguro de cómo convertir mi expresión regular a JavaScript. Este es mi código PHP:

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

Así, por ejemplo, los siguientes:

test test test test 

se convierte en:

test-test-test-test 

Alguien sabe cómo puedo hacer esto en JavaScript?

Respuesta

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

¡Funciona como un amuleto, gracias! – Skyfe

0

Consulte javascript replace referencia de función.

En su caso, es algo así como

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

Pero que sustituye a un solo espacio. Trabajando en ello ahora :)

+1

Needs a '/ G 'para la sustitución mundial –

+0

y necesita ser reemplazado ''-'', no'' ''. – mellamokb

0

En JavaScript, podría escribir como:

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

Por cierto, ¿está seguro de que has enviado el código PHP ¿verdad? Más bien sería:

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

En este caso, no importa si es '() *' o '(*)' porque no necesita el contenido del grupo de captura, por lo que no necesita los corchetes: 'result = subject.replace (/ */g, "-"); 'hará exactamente lo mismo. – stema

+0

Creo que deberías usar '+' en lugar de '*': quieres unir uno o más espacios, no cero o más. No lo he probado, pero de lo contrario podría producir '-t-e-s-t-t-e-s-t-t-e-s-t-t-e-s-t-' –

3

javascript función String.Replace también toma una expresión regular:

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

http://jsfiddle.net/5yn4s/

Cuestiones relacionadas