2016-05-05 13 views
0

ich mit Strings Übereinstimmen soll, die auch die alphanumerischen ist, haben Sonderzeichen -, / und auch weißen RäumeRegex richtige Muster Bedingungen in java jdbc passend

Zum Beispiel: Wenn der String Motorola C168/CC168i-1 ist, soll es passen

Aber wenn ich folgenden regulären Ausdruck verwende, stimmt es nicht richtig. Also, was ist der korrekte Zustand?

if (line.matches("[A-Za-z0-9 \\/\\-]+$") { 
    ..... 
} 
+2

Sind Sie sicher, dass die Zeichenkette keine anderen Leerzeichen enthält? Außerdem brauchen Sie '$' nicht mit '.matches()'. Und keine Notwendigkeit zu entkommen '/' und keine Notwendigkeit, den Bindestrich am Ende der Zeichenklasse zu entkommen. Verwenden Sie nur '[A-Za-z0-9/-] +', oder - um beliebige Leerzeichen einzufügen - '[A-Za-z0-9 \\ s/-] +'. –

+1

Können Sie die genaue Zeichenfolge kopieren, die fehlgeschlagen ist? –

Antwort

0

Sie benötigen aheads suchen, eine für jeden erforderlichen Zeichen, verankert zu starten:

if (line.matches("(?=.*)(?=.*/)(?=.*-)[A-Za-z0-9]+") 

BTW, Java ist nicht JavaScript; keine Notwendigkeit, Schrägstrichen zu entkommen.