Entwickler-Ecke
Basistechnologien - Testen ob String zum Anfang eines regulären Ausdrucks passt
jg72 - Do 15.03.18 09:29
Titel: Testen ob String zum Anfang eines regulären Ausdrucks passt
Hallo Zusammen,
ich habe hier mehrere nicht so komplizierte reguläre Ausdrücke, welche auch soweit funktionieren, z.B. "[0-9]{2}-[0-9]{4}-[A-Z]{4}", welcher dann z.B. zu "12-3456-ABCD" passen würde.
Nun muss ich bei Benutzereingaben testen, ob der Anfang der eingegebenen Zeichenfolge zu dem regulären Ausdruck passt. Ich könnte jetzt also für jeden regulären Ausdruck einen Unterausdruck "Passt zur Eingabelänge n" machen, aber dass ist mir zu umständlich und fehleranfällig.
Gibt es also so etwas dass mir bei der Eingabe von z.B. "12-345" sagen könnte, ja diese Zeichen passen schonmal?
Ich hoffe, ich habe mich klar genug ausgedrückt :-)
Viele Grüße
jg72 - Do 15.03.18 13:52
Also, wir haben hier im System eine Hand voll Felder, welche nach einem bestimmten Muster aufgebaut sind. Die Benutzer verwenden diese Felder sehr häufig als Suchkriterium, dabei reicht es dann meist, dass der Anfang eingegeben wird um eine überschaubare Ergebnismenge zu erhalten.
Ich könnte nun einfach überprüfen, ob die Länge der eingegebenen Zeichenkette kleiner als (in dem Beispiel) 12 Zeichen ist und dann mit einem Like in der DB suchen, ich wollte es aber noch ein bisschen intelligenter gestalten und ungültige Eingaben (z.B. "Hallo") direkt abweisen. Auch kann man schon nach wenigen eingegebenen Zeichen erkennen, welches Muster gemeint ist und da könnte man an vielen Stellen ein Eingabefeld für alle Möglichkeiten verwenden und das Programm kann auch bei unvollständiger Eingabe erkennen, welches Feld gemeint ist. Bedingung ist halt immer, dass am Ende etwas weggelassen wird, nicht am Anfang oder in der Mitte. Das brauchen die Mitarbeiter nicht.
Die UI sollte egal sein.
Ralf Jansen - Do 15.03.18 14:35
Der Regex sieht so aus als hätte ein gültiges Ergebnis immer eine fixe Länge.
In dem Fall könntest du die Eingabe, nur für den Test, auf die Ziellänge hin mit einer gültigen Zeichenfolge auffüllen und dann per Regex prüfen.
Du definierst also ein gültiges Muster als Vorlage z.B. 99-9999-AAAA und füllst dann die fehlenden Zeichen in der Eingabe mit den Bestandtteilen aus deinem per Definition gültigen Muster auf.
Die Eingabe 12-345 würdest du also zu 12-3459-AAAA ergänzen und das dann prüfen.
jg72 - Do 15.03.18 14:38
Und es hat Klick gemacht. Auf die Idee mit dem Ergänzen hätte ich auch wirklich selbst kommen können.
Vielen Dank
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!