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.
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.
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.
Dzięki !
Każdy sposób jest dobry :-)
Tylko tam zamiast \s użyj \x20 to jest kod na spacje, natomiast \s to także tabulatory, nowy wiersz itp.
Tak zrobię !
A jak podać w wyrażeniu wystąpienie znaku "|" (tzw pałka)? Coś takiego mi nie przechodzi "|".
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.