2011-05-12 10 views
6

Estoy haciendo una simple aseveración Lookbehind para obtener un segmento de la URL (ejemplo a continuación) pero en lugar de obtener la coincidencia obtengo el siguiente error: Javascript/RegExp: Lookbehind Assertion está causando un error de "grupo no válido"

Uncaught SyntaxError: Invalid regular expression: /(?<=\#\!\/)([^\/]+)/: Invalid group 

Aquí es el guión que estoy corriendo:

var url = window.location.toString(); 

url ==http://my.domain.com/index.php/#!/write-stuff/something-else

// lookbehind to only match the segment after the hash-bang. 

var regex = /(?<=\#\!\/)([^\/]+)/i; 
console.log('test this url: ', url, 'we found this match: ', url.match(regex)); 
El resultado debería ser write-stuff.

¿Alguien puede arrojar algo de luz sobre por qué este grupo regex está causando este error? Parece un RegEx válido para mí.

Conozco las alternativas sobre cómo obtener el segmento que necesito, así que esto es realmente solo para ayudarme a entender lo que está sucediendo aquí en lugar de obtener una solución alternativa.

Gracias por leer.

J.

+0

¿Puede dar algún ejemplo de cadena de entrada y qué parte de ella debe coincidir con regex? – Shekhar

+0

Lo he movido desde el bloque de código al ejemplo principal. Actualizado arriba. Por favor, avíseme si desea más detalles y lo publicaré felizmente. – Jannis

Respuesta

9

creo JavaScript no admite búsqueda hacia atrás positivo. Usted tendrá que hacer algo más como esto:

<script> 
var regex = /\#\!\/([^\/]+)/; 
var url = "http://my.domain.com/index.php/#!/write-stuff/something-else"; 
var match = regex.exec(url); 
alert(match[1]); 
</script> 
Cuestiones relacionadas