it-swarm.com.de

Ein regulärer Ausdruck zum Ausschließen eines Wortes / einer Zeichenfolge

Ich habe einen regulären Ausdruck wie folgt:

^/[a-z0-9]+$

Dies entspricht Zeichenfolgen wie /hello oder /hello123.

Ich möchte jedoch, dass einige Zeichenfolgenwerte wie /ignoreme und /ignoreme2 ausgeschlossen werden.

Ich habe ein paar Varianten ausprobiert, kann aber anscheinend keine zum Laufen bringen!

Mein letzter schwacher Versuch war

^/(((?!ignoreme)|(?!ignoreme2))[a-z0-9])+$

Jede Hilfe wäre dankbar :-)

251
romiem

Hier ist noch ein anderer Weg (mit einem negativen Look-Ahead ):

^/(?!ignoreme|ignoreme2|ignoremeN)([a-z0-9]+)$ 

Hinweis: Es gibt nur einen Erfassungsausdruck: ([a-z0-9]+).

321
Seth

Dies sollte es tun:

^/\b([a-z0-9]+)\b(?<!ignoreme|ignoreme2|ignoreme3)

Sie können so viele ignorierte Wörter hinzufügen, wie Sie möchten. Hier ist eine einfache Implementierung von PHP:

$ignoredWords = array('ignoreme', 'ignoreme2', 'ignoreme...');

preg_match('~^/\b([a-z0-9]+)\b(?<!' . implode('|', array_map('preg_quote', $ignoredWords)) . ')~i', $string);
36
Alix Axel

Um beide Wörter auszuschließen, benötigen Sie eine Konjunktion:

^/(?!ignoreme$)(?!ignoreme2$)[a-z0-9]+$

Nun müssen beide Bedingungen erfüllt sein (weder ignoreme noch ignoreme2 ist erlaubt), um eine Übereinstimmung zu haben.

17
Gumbo