Wyrażenia regularne + polskie znaki

0

Witam,

W jaki sposób dodać polskie znaki do wyrażenia regularnego [a-zA-Z]+. Przeprowadzam walidację danych w JTextField i jeżeli wpiszę nazwę miasta Elbląg to metoda matches() zwraca false :-/ . Proszę o pomoc.

Pozdrawiam.

0

Ja bym zrobił to tak:

String miasto_illegal_regex = "[^a-zA-ZąćęłńóśźżĄĘŁŃÓŚŹŻ]";
String miasto = "Elbląg";
Pattern p = Pattern.compile(miasto_illegal_regex);
Matcher m = p.matcher(miasto);

System.out.println(miasto+" jest :"+ ( (m.find()) ? "niepoprawny" : "poprawny" ) );

Choć do nazw miast warto dodać jeszcze spacje \s, '.' też może się przyadać.
[^\\s.a-zA-ZąćęłńóśźżĄĘŁŃÓŚŹŻ]
Tylko wtedy daj dla nazwy miasta .trim() żeby obciąć spacje z początku i końca.

0

Dzięki !
Każdy sposób jest dobry :-)

0

Tylko tam zamiast \s użyj \x20 to jest kod na spacje, natomiast \s to także tabulatory, nowy wiersz itp.

0

Tak zrobię !

0

A jak podać w wyrażeniu wystąpienie znaku "|" (tzw pałka)? Coś takiego mi nie przechodzi "|".

0
romek1 napisał(a)

A jak podać w wyrażeniu wystąpienie znaku "|" (tzw pałka)? Coś takiego mi nie przechodzi "|".

Spróbuj:
\|

Wyjaśnienie:
"|" to znak specjalny w wyrażeniach regularnych. Tego typu znaki trzeba poprzedzić "". Jednakże w String-ach "" także jest znakiem specjalnym, aby został odpowiednio zinterpretowany to należy znowu poprzedzić go "".
Jeśli czeka ciebie dużo pracy z wyrażeniami regularnymi to zaprzyjaźnij się z klasą Pattern, masz tam wiele fajnych metod.

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