2016-04-21 7 views
0

Wie der Titel schon sagt, möchte ich alle Sonderzeichen in einer Zeichenfolge überprüfen und verhindern. Allerdings verhindere ich dabei den Unterstrich (was gut ist). Gibt es eine Möglichkeit, Unterstriche noch zuzulassen?Java | Verhindern Sie Sonderzeichen außer Unterstrichen

Dies ist, wie ich den Scheck handhaben:

 Pattern pattern = Pattern.compile("[^a-zA-Z0-9&]", Pattern.CASE_INSENSITIVE); 
       Matcher m = pattern.matcher(String.join("", args)); 
       if (m.find()) { 
       //Code 
       } 
+3

Können Sie nicht einfach '_' nach' & '? Getestet und funktioniert auf [Regex101] (https://regex101.com/). –

+0

Sie scheinen zu erlauben und auch. – Thilo

Antwort

1

Ihr regulärer Ausdruck wird zur Zeit so dass alle Zeichen, Ziffern und Et-Zeichen (&). Fügen Sie dem negierten Satz einfach einen Unterstrich hinzu:

Pattern pattern = Pattern.compile("[^_a-zA-Z0-9&]", Pattern.CASE_INSENSITIVE); 
+0

Worum geht es bei CASE_INSENSITIVE (was ist teuer)? Scheint, dass das Muster bereits alle Groß- und Kleinbuchstaben umfasst. – Thilo

+0

Das ist wahr; Ich habe nur eine minimale Änderung an dem gegebenen Beispiel vorgenommen. Das 'Pattern.CASE_INSENSITIVE' ist redundant. –

Verwandte Themen