Regular Expression für Postleitzahl


kleinis_1

Mitglied
Hallo,

suche einen regulären Ausdruck für das Abprüfen einer Postleitzahl.
Ich bekomme einen Parameter übergeben der eine Postleitzahl sein soll.
Diese kann jedoch unvollständig sein, z.B. '56'.
Die Eingabe soll gegen eine festgelegte Berechtigung geprüft werden.
Sind dem Benutzer z.B alle PLZ im Raum '5' erlaubt, so wäre '56' ein gültiger Parameter.
Der Parameter und die Berechtigung liegen als String vor.

Auch würde mich interessieren mit welchen Java-Werkzeugen man am besten reguläre Ausdrücke verwendet.

Vielleicht hat ja jemand eine Idee wie man sowas am besten macht, vielen Dank im vorraus.

Gruß
Andi
 

Billie

Erfahrenes Mitglied
Hellas!

Mit dem java.util.regex.* Package kannst du regülare Ausdrücke formulieren. Es gibt da die etwas aufwändigere Variante:

Code:
Pattern p = Pattern.compile(regulärer Ausdruck);
Matcher m = p.matcher(Suchstring);
Boolean b = m.matches();

Oder:

Code:
Boolean b = Pattern.matches(regulärer Ausdruck, Suchstring)

Wie dein Rechtesystem bzgl. der Eingabe der PLZ aussieht, weiß ich leider nicht und kann mir jetzt nur schwer etwas dazu vorstellen. Vielleicht hat dir das obige Beispiel aber schonmal zum Teil geholfen.

mfg Billie
 

Thomas Darimont

Erfahrenes Mitglied
Hallo!

Als Regex koenntest du dann beispielsweise sowas nehmen:
Postleitzahlen sind ja immer(? in Deutschland) 5 stellig
5\d{0,4}
Die erste Ziffer des regex gibt man fest vor. anschliessend sagt man, dass
mindestens 0 aber hoechstens 4 weitere Zahlen kommen.

Das Pattern-Matching kannst du dann eben mit der gezeigten Pattern Klasse durchfuehren. (wobei man dort booleans statt Booleans bekommt ;)

Gruss Tom
 

kleinis_1

Mitglied
Das ist ja schon mal klasse,

jetzt muss ich nur noch wissen, wie ich angeben kann, das meine Berechtigung enthalten sein muss. Wenn ich z.B. die Berechtigung '56' habe, dann muss der entsprechende String auch mit '56' beginnen.

56330 soll dann erlaubt sein und 55123 dann nicht.

vielleicht weiss ja noch jemand weiter.
 

kleinis_1

Mitglied
ach ich hatte Tomaten vor den Augen, die Lösung vom Thomas beinhaltet ja schon alles was ich brauch, muss sie ja nur dynamisch machen.

Danke für Eure Hilfe
 

Billie

Erfahrenes Mitglied
Will noch anmercken, da du beim Beispiel Berechtigung "56" den regulären Ausdruck so umändern kannst:

56\d{0,3}

Also 5 gefolgt von 6 gefolgt von drei beliebigen Zahlen die nicht vorkommen müssen.
 

kleinis_1

Mitglied
Hallo,

hier nochmal für alle die es interessiert, meine Lösung.

Code:
public static boolean isAllowedPlz(String allowed, String plz){
		String regEx = allowed.trim()+"\\d{0,"+(5-allowed.length())+"}";
		boolean b = Pattern.matches(regEx, plz.trim());
		//System.out.println(b);
		return b;
	}
 

Forum-Statistiken

Themen
272.358
Beiträge
1.558.620
Mitglieder
187.832
Neuestes Mitglied
SirrDansen