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.
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.
Krótka odpowiedź: nie możesz.
JavaScript's RegExp Object
nie obsługuje negatywnego lookbehind.
@dotweb, -1, nie ma, a twoja odpowiedź nie dowodzi inaczej. – Qtax
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.
+1 To będzie zachowywać się tak samo, chyba że globalny modyfikator jest włączony. – Paulpro
To ** działa ** tylko jeśli X jest pojedynczym znakiem. –
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
To wcale nie rozwiązuje problemu ... –
Można znaleźć ten interesujący: http://blog.stevenlevithan.com/archives/ mimic-lookbehind-javascript. – pimvdb
Nie sądzę, że negatywne lookbehinds są w POSIX, lookarounds nie są obsługiwane w BRE ani ERE. ;-) – Qtax