2016-08-01 15 views

Antwort

3

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 -------^ 
6

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 
+0

@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. –

3

Regex ohne \\ arbeiten. Du musst nichts entkommen.

"123".matches("[a-zA-Z0-9]{1,5}");