2011-01-12 6 views

Respuesta

37

Su expresión regular es perfecto, y sí, hay que escapar barras desde JavaScript utiliza las barras para indicar expresiones regulares.

Sin embargo, el problema es que el método replace de JavaScript no realiza un reemplazo in situ. Es decir, en realidad no cambia la cadena, solo le da el resultado de la sustitución.

Prueba esto:

myString = '/courses/test/user'; 
myString = myString.replace(/\/courses\/([^\/]*)\/.*/, "$1"); 
document.write(myString); 

Ajusta myString al valor reemplazado.

9

string.replace no modifica la cadena original. En cambio, a devuelve una nueva cadena que ha tenido el reemplazo realizado.

Probar:

myString = '/courses/test/user'; 
document.write(myString.replace(/\/courses\/([^\/]*)\/.*/, "$1")); 
9

/[\/]/g partidos barras diagonales.
/[\\]/g coincide con barras diagonales inversas.

+0

Y '/ [\/| \\]/g' coincide con las barras diagonales hacia delante y hacia atrás. –

6

En realidad, no necesita escapar de la barra cuando está dentro de una clase de caracteres como en una parte de su ejemplo (es decir, [^\/]* está bien como solo [^/]*). Si está fuera de una clase de caracteres (como en el resto de tu ejemplo, como \/courses), entonces necesitas escapar de las barras.