Wyrażenia regularne a polskie znaki

0
Pattern p = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m;
m = p.matcher(_className);
if((m.find() == false)
{
    System.out.println("Jestem liczbą albo literą!");
}
else
{
    System.out.println("Nie jestem liczbą ani literą!");
}

Kod powyżej nie zadziała jeśli w _className będą polskie znaki.

Jakieś sugestie jak to elegancko rozwiązać?

1

Wydaje mi się, że w Javie musisz się bawić z \p, co odpowiada za kategorie unikodu. Powinno działać coś takiego "[^\p{L}\d ]".

1
Pattern.matches("[\\p{javaLowerCase}|\\p{javaUpperCase}|\\d]*", _className);

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0