Ich habe den folgenden Test-Code-Snippet schrieb:Überprüfen Sie, dass String ist alphanumerische mit Länge 1 bis 5
"123".matches("\\[a-zA-Z0-9]{1,5}");
Allerdings gibt es false
.
Warum und wie behebt man das?
Ich habe den folgenden Test-Code-Snippet schrieb:Überprüfen Sie, dass String ist alphanumerische mit Länge 1 bis 5
"123".matches("\\[a-zA-Z0-9]{1,5}");
Allerdings gibt es false
.
Warum und wie behebt man das?
Sie sind die erste eckige Klammer mit dem \\
entkommen, die die Expression zwischen den eckigen Klammern bedeutet, wird nicht als Zeichenklasse behandelt. Entfernen Sie die Flucht und Sie sollten in Ordnung sein:
"123".matches("[a-zA-Z0-9]{1,5}"
// Here -------^
Durch die erste [
entkommen, du hast es eine wörtliche [
, während Sie ein Zeichenklasse (Klammerausdruck) definieren wollte.
entfernen \
:
"123".matches("[a-zA-Z0-9]{1,5}");
^
Siehe Java demo:
System.out.println("123".matches("[a-zA-Z0-9]{1,5}")); // = > true
@gstackoverflow: Nur meine Meinung: die beste funktionierende Antwort zuerst verdient akzeptiert. Mureiniks Antwort ist die gleiche und wurde nach meinem [Kommentar] (http://stackoverflow.com/questions/38693939/check-that-string-is-alphanumeric-with-length-1-5/38693976#comment64766620_38693939) und veröffentlicht Antworten. Ich widerrufe meine Aufwertung, weil ich glaube, dass es nicht fair war. –
Regex ohne \\
arbeiten. Du musst nichts entkommen.
"123".matches("[a-zA-Z0-9]{1,5}");
Ich bin überrascht, es läuft überhaupt, angesichts der unausgeglichenen '[]'. –
Das erste '[' sollte nicht maskiert werden. Entferne das '' '' '' '. –
@Andy Turne Länge sollte {1,5} sein – gstackoverflow