2010-09-15 12 views
7

ProblemaCómo terminar una expresión regular con una barra inclinada en Javascript

Estoy tratando de igualar la parte de hash de una dirección URL utilizando Javascript. El hash tendrá el formato

/#\/(.*)\// 

Esto es fácil de lograr con el método de crear una expresión regular JS "new RegExp()", pero no puedo encontrar la manera de hacerlo utilizando el formato estándar, porque las dos barras hacia el final comienzan un comentario. ¿Hay alguna otra forma de escribir esto que no comience un comentario?

Ejemplo

// works 
myRegexp = new RegExp ('#\/(.*)\/'); 

// fails 
myRegexp = /#\/(.*)\// 
+0

¿Dónde falla esto? 're = /#\/(.*)\//;' me da '/#\/(.*)\//' en la consola ... – gnarf

+1

¿Ha probado esto para mostrar que falla? ¿que con? eso parece algo estúpido para un analizador. – lincolnk

+0

Esto es extraño. No puedo ver lo que cambié en mi código, pero copiar este código funciona bien. Mi error. – lonesomeday

Respuesta

10

Estoy tratando de hacer coincidir la parte hash de una URL con Javascript.

Sí, no hagas eso. Hay un analizador de URL perfectamente bueno integrado en cada navegador. Establecer una href en un objeto ubicación (window.location o un enlace) y se puede leer partes de URL/escritura de las propiedades hostname, pathname, search, etc. hash

var a= document.createElement('a'); 
a.href= 'http://www.example.com/foo#bar#bar'; 
alert(a.hash); // #bar#bar 

Si usted está poniendo un camino similar / - lista separada en el hash, sugiero que siga hash.split('/').

En cuanto a la expresión regular, ambas versiones funcionan de manera idéntica para mí. El // posterior no causa ningún comentario. Si solo desea aplacar algunos resaltados de sintaxis dudosos, podría escapar al / a \x2F.

+0

Oh, bien, lo usaré. ¡Gracias! – lonesomeday

Cuestiones relacionadas