2010-11-19 44 views
12

Tengo una cadena que necesito ejecutar un reemplazo.Javascript reemplazar regex comodín

string = replace('/blogs/1/2/all-blogs/',''); 

Los valores 1, 2 y todos los blogs pueden cambiar. ¿Es posible hacerlos comodines?

Gracias de antemano,

Saludos

Respuesta

15

Puede utilizar .* como marcador de posición "cero o más de cualquier carácter aquí" o .+ de "uno o más de cualquier carácter aquí". No estoy 100% seguro exactamente lo que estamos tratando de hacer, pero por ejemplo:

var str = "/blogs/1/2/all-blogs/"; 
str = str.replace(/\/blogs\/.+\/.+\/.+\//, ''); 
alert(str); // Alerts "", the string is now blank 

Pero si hay algo más después o antes de que:

str = "foo/blogs/1/2/all-blogs/bar"; 
str = str.replace(/\/blogs\/.+\/.+\/.+\//, ''); 
alert(str); // Alerts "foobar" 

Live example

Tenga en cuenta que en ambos casos, solo se reemplazará la primera coincidencia. Si desea sustituir todos partidos, añadir un g así:

str = str.replace(/\/blogs\/.+\/.+\/.+\//g, ''); 
//          ^-- here 

Usted puede leer sobre JavaScript de regular expressions on MDC.

+0

podría intentar usar la variante perezoso del selector, es decir, '*' y '+' en los casos en que puede haber barras adicionales posteriores a la mencionada.? cuerda. –

0

probar este

(/.+){4} 

de escape según el caso

+1

Mejor uso '[^ /]' en lugar de '.'. – Gumbo

+0

@Gumbo que golpeará la línea vuelve también y eso puede no ser lo que quiere OP. – Keng

1
js> 'www.google.de/blogs/1/2/all-blogs'.replace(/\/blogs\/[^\/]+\/[^\/]+\/[^\/]+\/?/, ''); 
www.google.de 
+0

¿JS requiere '/' ser escapado? – Keng

+0

Como '/' es el delimitador de las expresiones regulares (no las pone entre comillas): sí – ThiefMaster

1

¿Qué hay de simplemente dividir la cadena en barras y sólo la sustitución de los valores?

var myURL = '/blogs/1/2/all-blogs/', fragments, newURL; 
fragments = myURL.split('/'); 
fragments[1] = 3; 
fragments[2] = 8; 
fragments[3] = 'some-specific-blog'; 
newURL = fragments.join('/'); 

que debe devolver:.?

'/blogs/3/8/some-specific-blog'