2010-03-02 21 views
10

Tengo problemas para googlear esto. En algún código veo¿Qué hace/[ []/do en JavaScript?

name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 

/[\[]/ parece ser el parámetro 1. ¿Qué hacen los símbolos? Parece que está reemplazando [] con \[\], pero ¿qué hace específicamente /[\[]/?

+2

La verdadera pregunta es por eso que están usando una clase de caracteres para que coincida con un solo '[' – friedo

+0

@friedo supongo que no saben lo que '[... ] 'es la clase de caracteres –

Respuesta

11

La sintaxis /…/ es literal regular expression syntax. Y la expresión regular [\[] describe una clase de caracteres ([…]) que es solo el carácter [). Entonces /[\[]/ es una expresión regular que describe un solo [.

Pero dado que el indicador global no está establecido (lo que sólo el primer partido será reemplazado), todo el asunto podría ser reemplazado con esta (probablemente más fácil de leer):

name.replace("[", "\\[").replace("]","\\]") 

Pero si todos los partidos deberían ser reemplazados, probablemente utilizo este:

name.replace(/([[\]])/g, "\\$1") 
10

Es una expresión regular que coincide con el carácter de corchete izquierdo.

Es una forma extraña de hacerlo; En general, parece que el código está tratando de poner barras invertidas antes de corchetes en una cadena, que también se puede hacer como esto:

var s2 = s1.replace(/\[/g, '\\[').replace(/]/g, '\\]'); 

creo.

3

/[[]/definió un rango de caracteres que incluye solo el carácter ']' (escapado), está correcto que se reemplaza [] por [].

+0

hrm ... reemplaza [y] con su versión de escape s –

2

El [] está en regex en sí mismo y se utiliza para designar una colección de caracteres coincidentes. Si desea representar el [ o el ] reales en expresiones regulares, debe escaparse por \, de ahí el [\[] y el [\]]. El / anterior y posterior son solo parte de la sintaxis estándar de JS para indicar un patrón de expresión regular.

Después de todo, reemplaza [ por \[ y luego reemplaza ] por \].

+0

Supongo que dentro [] a [no es un meta char. [[] es una clase de caracteres válida que solo coincide con [ – codaddict