Definieren eines regulären JavaScript-Ausdrucks, der mit Ausnahme einer bestimmten Zeichenfolge übereinstimmt

8

Ok, ich fühle mich ziemlich dick. Grundsätzlich möchte ich einen regulären JavaScript-Ausdruck definieren, der genau zu einer bestimmten Zeichenfolge passt, die außer entspricht. Also sag ich habe die Zeichenfolge

%Vor%

oder

%Vor%

Ich möchte einen einzelnen eigenständigen regulären Ausdruck, so dass er mit der Zeichenfolge

übereinstimmt %Vor%

oder die Zeichenfolge

%Vor%

Nur nicht "Hund" oder "Katze" allein. Ich habe das versucht, was im Grunde sagt, ignorieren alles beginnend mit "Katze" oder "Hund", die nicht genau das ist, was ich brauche ...

%Vor%

Das muss einfach sein ... danke!

Bearbeiten Nur um klarzustellen, ich möchte keine Negation von Rückgabewerten machen, um das gewünschte Resultat zu erhalten - die Regex sollte falsch für "Hund" und wahr für "Hundeschlitten" oder falsch für "Katze" und wahr für "Vieh" zurückgeben

    
VLostBoy 13.01.2012, 15:45
quelle

3 Antworten

6

Ich würde mich dafür entscheiden, ein Match einfach zu negieren, wie es in Linus Kleens Antwort steht. Wenn Sie jedoch alles in Regex (oder für die Lernerfahrung oder etwas) tun müssen, dann sollte das folgende funktionieren:

%Vor%

Dies verwendet zwei negative Lookaheads in einem Wechsel. Der erste sagt "Match cat oder dog , wenn nicht das Ende des String-Zeichens folgt ( $ ), gefolgt von allem anderen". Dies entspricht dogsled und cats und Dingen dieser Art.

Die zweite Hälfte der Alternation sagt "Stellen Sie sicher, dass der Anfang der Zeichenfolge ( ^ ) nicht gefolgt wird von dog oder cat (so dass es nicht mit einer dieser beginnt), dann passen Sie alles an ". Dadurch erhalten Sie ein beliebiges Wort, das nicht mit cat oder dog (wie banana ) beginnt.

Hier ist ein Beispiel für Regexpal .

    
eldarerathis 13.01.2012, 16:19
quelle
4

Ich erinnere mich, dass negative Look-Ahead-Assertions ( (?! ... ) ) nicht in allen Javascript-Interpretern vollständig unterstützt werden. Eine einfache Negation des Ergebnisses der Regex sollte ebenfalls genügen, nein?

%Vor%     
Linus Kleen 13.01.2012 15:57
quelle
0

Ich denke, das sollte den Trick machen:

%Vor%     
davogotland 13.01.2012 15:53
quelle

Tags und Links