variable validate example javascript regex escaping

validate - Regex de JavaScript con barras escapadas no reemplaza



replace by regex javascript (4)

En realidad, no necesita escapar de la barra diagonal 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 con el resto de su ejemplo, como //courses ), entonces necesita escapar barras diagonales.

¿Tengo que escapar de las barras diagonales al ponerlas en expresión regular?

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

En lugar de imprimir "prueba", imprime toda la cadena fuente.

Vea esta demostración:

http://jsbin.com/esaro3/2/edit


Su expresión regular es perfecta, y sí, debe evitar las barras diagonales, ya que JavaScript usa las barras diagonales para indicar expresiones regulares.

Sin embargo, el problema es que el método de 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);

Esto establece myString en el valor reemplazado.


/[//]/g coincide con barras diagonales.
/[//]/g coincide con barras inclinadas hacia atrás.


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

Tratar:

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