Wenn Sie etwas wollen, aber Buchstaben übereinstimmen, können Sie einen Blick in Unicode properties haben sollte.
\p{L}
ist jede Art von Brief von jeder Sprache
ein großes „P“ Verwenden statt es die Negation ist, so würde \P{L}
nichts gefunden, das kein Buchstabe ist.
\d
oder \p{Nd}
ist passend Ziffern
So Ihren Ausdruck in der modernen Unicode-Stil aussehen würde wie diese
entweder eine negierte Zeichenklasse mit
[^\p{L}\p{Nd}]
oder negiert Eigenschaften
[\P{L}\P{Nd}]
Die nächste Sache ist, matches()
passt den Ausdruck gegen die vollständige Zeichenfolge, so dass Ihr Ausdruck nur mit genau einem Zeichen in der Zeichenfolge wahr ist. So müssen Sie eine quantifier hinzuzufügen:
string.matches("[^\p{L}\p{Nd}]+")
gibt true zurück, wenn der gesamten String nur nicht alphanumerische Zeichen und mindestens einer von ihnen.
[^ A-Za-z0-9] .. – Pheonix