2016-10-19 5 views
0

Ich habe eine Regex mit einer 2-stelligen Nummer ^(\d{2})$, aber müssen das Gegenteil davon tun. Zum Beispiel, um die folgende Notwendigkeit entsprechen:Regex zu alles außer einer 2-stelligen Nummer

HK 
VK 
112 
1H 
V1 

aber die folgenden würde paßt nicht

14 
15 
91 
00 
99 

Gibt es irgendeine Art und Weise kann ich nur meinen regex umkehren? Ich weiß, dass ich nach einer Übereinstimmung suchen und das Ergebnis invertieren könnte, aber das ist innerhalb meiner Einschränkungen nicht möglich.

+3

Es ist einfach, wenn Ihre Regex-Engine Lookaheads unterstützt - '^ * $' (\ d {2} $?!).. Siehe http://stackoverflow.com/a/37988661/3832970 (* ein String, der einem String-Abschnitt entspricht). –

+0

Und wenn nicht, wirst du eine schlimme Zeit haben. '^ (?:.? |. {3,} | [^ \ d]. |. [^ \ D]) $' – Siguza

+1

Es ist wichtig zu wissen, ob diese in anderen Strings vorkommen oder nicht. Die aktuellen Vorschläge, die Sie erhalten haben, haben den Anker "Beginn des Strings", und dies funktioniert nur in diesem Fall. Für Regex ist es immer wichtig, den Kontext zu verstehen, in dem die Übereinstimmungen auftreten müssen. – gview

Antwort

-1

Sie können dies versuchen:

^([^\d]{2}|\d[^\d]|[^\d]\d|.|.{3}.*)$ 
+0

Warum wurde das heruntergeregelt? Funktioniert es nicht? Ich sehe keinen viel einfacheren Ansatz für Suchmaschinen, die Lookahead nicht unterstützen. – mm759

Verwandte Themen