Pattern.matches("[^0-5]*[0-5][^0-5]*","mfismd4sodfmd");
Zwraca true jeśli drugi argument pasuje do wzoru z pierwszego argumentu.
Może objaśnie znaki. [abe43] to jest opcja, oznacza, ze w tym miejscu może się pojawić a lub b lub e lub 4 lub 3. Można w opcji użyć zanegowania - może się pojawić wszystko poza: [^abe] - wszystko poza a, b i e. * oznacza, ze znak przed * może wystąpić 0 lub wiele razy. Dla ułatwienia w [] mozna też stosować od do [od-do].
Opisując ten wzór słownie: <każdy znak poza 0-5 dowolna ilosc razy (rowniez 0)><0-5><każdy znak poza 0-5 dowolna ilosc razy (rowniez 0)>
A co do regexów to gorąco polecam stronke:
https://regex101.com/
Można sobie edytować wzór i sprawdzać na żywo jak działa na wpisanych stringach.