2011-08-11 13 views
7

Czy ktoś wie, jak przetłumaczyć wyrażenia POSIX regexp (?<!X)A w JS?JS regexp (? <! X) A

Znajdź tylko jeśli nie jest poprzedzone X.

+1

Można znaleźć ten interesujący: http://blog.stevenlevithan.com/archives/ mimic-lookbehind-javascript. – pimvdb

+0

Nie sądzę, że negatywne lookbehinds są w POSIX, lookarounds nie są obsługiwane w BRE ani ERE. ;-) – Qtax

Odpowiedz

3

Krótka odpowiedź: nie możesz.

JavaScript's RegExp Object nie obsługuje negatywnego lookbehind.

+0

@dotweb, -1, nie ma, a twoja odpowiedź nie dowodzi inaczej. – Qtax

5

Wystarczy sprawdzić albo na początku (ergo nie ma X) lub że jest non-X charakter.

(^|[^X])A 

uzyskać więcej niż jeden znak, można sprawdzić A a następnie zaznacz tekst dopasowany do X, po którym następuje, i wyrzucić meczu czy pasuje drugiego wzoru.

+0

+1 To będzie zachowywać się tak samo, chyba że globalny modyfikator jest włączony. – Paulpro

+3

To ** działa ** tylko jeśli X jest pojedynczym znakiem. –

0

Spróbuj tego:

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

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

jeśli potrzebujesz części po "a", spróbuj:

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

To wcale nie rozwiązuje problemu ... –

Powiązane problemy