2010-08-09 22 views
9

Escribí una expresión regular que espero que funcione, pero no es así.¿Cómo puedo unir un número entre corchetes con expresiones regulares

var regex = new RegExp('(?<=\[)[0-9]+(?=\])') 

Javascript me está dando el error Invalid regular expression :(/(?<=[)[0-9]+(?=])/): Invalid group

¿Tiene javascript no son compatibles con búsqueda hacia delante o de búsqueda hacia atrás?

Respuesta

17

Esto debería funcionar:

var regex = /\[[0-9]+\]/; 


edición: con un operador de agrupación para apuntar sólo el número:

var regex = /\[([0-9]+)\]/; 

Con esta expresión, se podría hacer algo como esto:

var matches = someStringVar.match(regex); 
if (null != matches) { 
    var num = matches[1]; 
} 
+0

Esto coincide con el número, incluyendo los soportes, que no es lo que quiere el OP. Sin embargo, es una alternativa decente con grupos. – strager

+0

Buen punto - actualizado. – jmar777

+0

Gracias por la solución. Un poco kludgeish pero bueno. – Teddy

2

Lookahead es compatible, pero no mirar atrás. Puedes get close, con un poco de engaño.

0

Si está citando un RegExp, tenga cuidado con el doble escape de sus barras diagonales inversas.

1

para incrementar varios números en forma de digamos:

var str = '/a/b/[123]/c/[4567]/[2]/69'; 

Probar:

str.replace(/\[(\d+)\]/g, function(m, p1){ 
return '['+(p1*1+1)+']' } 
) 

//Gives you => '/a/b/[124]/c/[4568]/[3]/69' 
Cuestiones relacionadas