Pattern.compile, Matcher i regex

Pattern.compile, Matcher i regex
hdw3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 30
0

Witam!
Chciałbym zamienić tę linijkę kodu :

Kopiuj
if(Pattern.compile("\\d+").matcher(nazwisko).matches())

na taką, która dodatkowo będzie wyłapywała gdy nazwisko będzie Stringiem typu "123abc" lub "abc123", bo na chwile obecna wylapuje jedynie Stringi, które są w całości cyferkami, np.
Mam coś takiego:
(123) - true
(123abc) - false
(abc) - false
a chcę:
(123)-true
(123abc)-true
(abc123)-true
(abc)- false
Próbowałem coś takiego, ale nie działa:

Kopiuj
if(Pattern.compile("\\d+|(\\d+&\\D+)").matcher(nazwisko).matches())
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Poszedłbym w kierunku czegoś takiego:
((?:\d+(?:[a-zA-Z]+)?)|(?:[a-zA-Z]+\d+))

Koziołek
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Stacktrace
  • Postów: 6822
2

Użyj biblioteki. W Apache Commons masz odpowiednie narzędzie

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.