Ich habe ein XML-Schema-Problem, genauer ein Problem beim Erstellen eines Pattern (RegExpression).
In einem Schema darf ein Element nur aus genau 2 Buchstaben gefolgt von genau 6 Ziffern bestehen, Bsp.: AB123456 oder XY000001 oder TT109999
Das Pattern zur Validierung wäre: „[A-Z]{2}\d{6}“
Nun mein Problem:
Die 6 Ziffern sind in jeder Kombination erlaubt, nur nicht genau 6 Nullen „000000“ in Folge, Bsp.: AB000000 oder XY000000 ist nicht erlaubt
Wie ich das als Pattern definiere soll weiß ich einfach nicht.
Mein Ansatz, der natürlich nicht funktioniert (weil das ^ ja nur für eine Zeichenklasse gilt), aber meinen Gedankengang zeigt ist: „[A-Z]{2}(\d{6}^|^000000)“
Nun mein Problem:
Die 6 Ziffern sind in jeder Kombination erlaubt, nur nicht
genau 6 Nullen „000000“ in Folge, Bsp.: AB000000 oder XY000000
ist nicht erlaubt
Mir fällt da spontan nur ein die erlaubten Kombinationen aufzuzählen. Also jeweils beliebige Ziffern und an einer Stelle eben nur 1-9. Vereinfacht auf eine 4-stellige Zahl würde das dann so aussehen:
[1-9]\d{3}|\d[1-9]\d{2}|\d{2}[1-9]\d|\d{3}[1-9]
Wenn du eine elegantere Lösung findest lass es uns wissen.
man kann meines Wissens eine Längenvorgabe mit einem Pattern kombinieren, dann wird auch der reguläre Ausdruck etwas schöner. 2 Buchstaben A-Z, eine Ziffer 1-9 sowie davor und danach maximal 5 beliebige Ziffern. Wenn der komplette String jetzt noch genau 8 Zeichen lang ist sollten deine Regeln berücksichtigt sein.
Gut gedacht und vielen Dank, das ist des Rätsels Lösung
Getestet, funktioniert, SUPER + DANKE
Abschließend frage ich mich, was wäre, wenn die Aufgabenstellung nicht auf eine Ziffernfolge abzielt, sondern auf eine besondere Zeichenkombination.
Bsp.: Genau 2 Ziffern und 6 Zeichen/Buchstaben sind erlaubt „\d{2}[A-Z]{6}“ („12ABCDEF“ wäre ok), aber die Zeichenfolge „WERWAS“ nicht („12WERWAS“ nicht ok)…