2011-08-11 13 views
7

¿Alguien sabe cómo traducir el POSIX regexp (?<!X)A en JS?JS regexp (? <! X) A

Encuentra A sólo si no ha sido precedida por X.

+1

Usted puede encontrar este interesante: http://blog.stevenlevithan.com/archives/ mimic-lookbehind-javascript. – pimvdb

+0

No creo que las miradas negativas estén en POSIX, las vistas alternativas no son compatibles con BRE ni con ERE. ;-) – Qtax

Respuesta

3

Respuesta corta: no se puede.

JavaScript RegExp Object no es compatible con lookbehind negativo.

+0

@dotweb, -1, no es así, y su respuesta no prueba lo contrario. – Qtax

5

simplemente marque ya sea para el comienzo (ergo no hay X) o que hay un carácter no-X.

(^|[^X])A 

Para más de un carácter, se puede comprobar por A y compruebe el texto coincidente para X seguido por A, y desechar el partido si coincide con el segundo patrón.

+0

+1 Esto se comportará igual a menos que el modificador global esté activado. – Paulpro

+3

Esto ** solo ** funcionará si X tiene un solo carácter. –

0

Prueba esto:

var str = "ab"; 
console.log(/a(?!x)/i.exec(str)); //a 

var str = "ax"; 
console.log(/a(?!x)/i.exec(str)); //null 

si necesita de una parte después de "a", prueba:

/a(?!x).*/i 
+0

Esto no resuelve el problema en absoluto ... –