Wie würde ich prüfen, ob ein String-Eingang in Java das Format hat:Besonderen Java regulärer Ausdruck
xxxx-xxxx-xxxx-xxxx
wobei x eine Ziffer 0..9 ist?
Danke!
Wie würde ich prüfen, ob ein String-Eingang in Java das Format hat:Besonderen Java regulärer Ausdruck
xxxx-xxxx-xxxx-xxxx
wobei x eine Ziffer 0..9 ist?
Danke!
String-Objekte in Java haben eine matches
Methode, die gegen einen regulären Ausdruck überprüfen:
myString.matches("^\\d{4}(-\\d{4}){3}$")
Diese besonderen Ausdruck prüft, ob vier Ziffern, und dann dreimal (ein Bindestrich und vier Ziffern), so repräsentiert Ihre erforderliches Format.
Hinweis: Ich habe es nur noch einmal bearbeitet, weil ich die Anker weggelassen. Verwenden Sie die verankerte Version, nicht die ohne. – Joey
Warum konnte nicht reduziert werden auf: myString.matches ("(- \\ d {4}) {4}"); –
@Amir: Weil Ihre Zeichenfolge dann mit einem Bindestrich beginnen müsste. – Joey
Um zu beginnen, ist dies eine große Quelle von Regexps: http://www.regular-expressions.info. Besucht es, stochert und spielt herum. Weiter hat die java.util.Pattern
API eine präzise overview von Regex-Mustern.
Nun zurück zu Ihrer Frage: Sie wollen vier aufeinanderfolgende Gruppen von vier Ziffern, die durch einen Bindestrich getrennt sind, abgleichen. Eine einzelne Gruppe von 4 Stellen in regex als
\d{4}
Vier davon durch einen Bindestrich kann getrennt dargestellt werden wird wie folgt dargestellt:
\d{4}-\d{4}-\d{4}-\d{4}
Um es kürzer machen Sie auch eine einzelne Gruppe darstellen können vier Ziffern und drei aufeinander folgende Gruppen von vier Ziffern mit einem Bindestrich vorangestellt:
\d{4}(-\d{4}){3}
nun in Java Sie String#matches()
zu testen, ob ein String mit dem angegebenen verwenden können Regex.
boolean matches = value.matches("\\d{4}(-\\d{4}){3}");
Bitte beachte, dass ich die Schrägstriche \
\
von einem anderen Backslash geschützt, weil die Schrägstriche eine besondere Bedeutung in String
haben. Um den tatsächlichen Backslash darzustellen, müssten Sie \\
verwenden.
löschte meine Antwort - ich las "JavaScript" in meinem Kopf: P –