Wyrażenia regularne a polskie znaki

Wyrażenia regularne a polskie znaki
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
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ć?

ZJ
  • Rejestracja: dni
  • Ostatnio: dni
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 ]".

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
Pattern.matches("[\\p{javaLowerCase}|\\p{javaUpperCase}|\\d]*", _className);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.