KWALIFIKACJA INF3 - STYCZEŃ 2019

PYTANIE NR 29.
Która wartość tekstowa nie pasuje do podanego wzorca wyrażenia regularnego?

(([A-ZŁŻ][a-ząęóżźćńłś]{2,})(-[A-ZŁŻ][a-ząęóżźćńłś]{2,})?)

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W podanym wyrażeniu regularnym dozwolone są litery (wielka na początku i co najmniej dwie małe) oraz opcjonalnie drugi człon po myślniku. Wzorzec nie przewiduje spacji, więc napis zawierający odstęp nie zostanie dopasowany. Dlatego poprawna jest odpowiedź "Jelenia Góra".

Pełne wyjaśnienie:

Wyrażenie regularne (([A-ZŁŻ][a-ząęóżźćńłś]{2,})(-[A-ZŁŻ][a-ząęóżźćńłś]{2,})?) opisuje ciąg zaczynający się od jednej wielkiej litery z zakresu [A-ZŁŻ], po której musi wystąpić co najmniej 2 razy mała litera z zakresu [a-ząęóżźćńłś] (o tym mówi kwantyfikator {2,}). To odpowiada typowej strukturze pojedynczego nazwiska lub nazwy zapisanej jednym wyrazem.

Następnie wzorzec dopuszcza (ale nie wymaga) drugi człon poprzedzony myślnikiem: fragment (-[A-ZŁŻ][a-ząęóżźćńłś]{2,})?. Znak ? oznacza, że cały ten fragment może wystąpić 0 lub 1 raz, czyli nazwisko może być jednoczłonowe albo dwuczłonowe połączone myślnikiem.

Kluczowe jest to, że we wzorcu nie ma spacji ani żadnej klasy białych znaków. W regex działa zasada: jeśli znak nie jest opisany we wzorcu, to nie jest akceptowany. Dlatego ciąg zawierający odstęp między wyrazami nie przejdzie walidacji.

  • "Kasprowicza" pasuje: zaczyna się wielką literą, potem ma więcej niż dwie małe litery.
  • "Kowalski" pasuje z tego samego powodu.
  • "Nowakowska-Kowalska" pasuje, bo drugi człon po myślniku spełnia identyczne wymagania (wielka litera + co najmniej 2 małe).
  • "Jelenia Góra" nie pasuje, ponieważ zawiera spację, której wzorzec nie dopuszcza (dopuszczony jest tylko ewentualny myślnik jako separator).

W praktyce, gdy trzeba akceptować dwuczłonowe nazwy ze spacją, wzorzec trzeba świadomie rozszerzyć (np. o spację lub klasę białych znaków), a następnie przetestować na przykładach pozytywnych i negatywnych, aby nie dopuścić niepożądanych formatów.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To klasa znaków, czyli zbiór dopuszczalnych znaków w danym miejscu. Zapis [A-ZŁŻ] oznacza: jedna wielka litera od A do Z oraz dodatkowo litery Ł i Ż. Dzięki temu wzorzec wymaga rozpoczęcia tekstu wielką literą.
{2,} to kwantyfikator "co najmniej 2 razy". Jeśli stoi po klasie [a-ząęóżźćńłś], to wymusza minimum dwie małe litery po pierwszej wielkiej literze. Tekst typu "Ka" nie pasowałby, bo ma za mało znaków po pierwszej literze.
W regex działa zasada: dopasowane mogą być tylko znaki, które wprost wynikają ze wzorca. Tutaj dozwolone są litery oraz ewentualnie myślnik w określonym miejscu. Ponieważ wzorzec nie zawiera spacji ani np. \s, ciąg ze spacją (np. nazwa dwuwyrazowa) nie zostanie dopasowany.
Nie. Myślnik - jest zwykłym znakiem, który musi się pojawić w tekście dokładnie tam, gdzie przewiduje go wzorzec. Spacja to inny znak i jeśli nie została uwzględniona (np. dosłownie albo przez \s), to dopasowanie się nie powiedzie. W tym zadaniu dozwolony jest myślnik, a spacja nie.
Wzorzec ma fragment (-[A-ZŁŻ][a-ząęóżźćńłś]{2,})?. To oznacza: opcjonalnie może wystąpić myślnik, a po nim drugi człon w tym samym formacie (wielka litera + co najmniej dwie małe). Jeśli widzisz taki opcjonalny blok, to wiesz, że myślnik jest przewidziany.
Regex służy do walidacji danych wejściowych: nazwisk, kodów pocztowych, numerów telefonów, loginów czy haseł (częściowo). Pomaga szybko wykryć zły format przed wysłaniem danych na serwer. Ważne: walidacja po stronie klienta poprawia UX, ale nie zastępuje walidacji po stronie serwera.
Częsty błąd to zakładanie, że klasa znaków "domyślnie" obejmuje też spacje lub inne znaki. Inny błąd to przeoczenie ograniczeń: np. że w klasie są tylko małe litery, więc wielka litera w środku nie przejdzie. Warto analizować wzorzec znak po znaku i sprawdzać, co jest faktycznie dozwolone.
W JavaScript używa się obiektu RegExp i metody test(), np. /wzorzec/.test(tekst). Metoda zwraca true lub false. Dla walidacji formularzy to typowe rozwiązanie, ale pamiętaj, że finalną weryfikację i tak należy wykonać na serwerze.
W PHP funkcja preg_match sprawdza, czy wzorzec pasuje do tekstu. Zwraca informację, czy znaleziono dopasowanie. W praktyce często dodaje się kotwice początku i końca, aby walidować cały ciąg, a nie tylko fragment. To ważne przy polach typu "nazwisko".
Dopasowanie fragmentu oznacza, że gdzieś w środku tekstu istnieje część pasująca do wzorca. Dopasowanie całości zwykle wymaga użycia kotwic początku i końca (np. początek i koniec linii), aby wymusić zgodność całego ciągu. Na egzaminie warto zwracać uwagę, czy pytanie mówi o całym napisie, czy o wystąpieniu wzorca.
info

Statystycznie 40% uczniów zna prawidłową odpowiedź. trudne

Eksperci podkreślają: "W podanym wyrażeniu regularnym dozwolone są litery (wielka na początku i co najmniej dwie małe) oraz opcjonalnie drugi człon po myślniku."

Źródła:

  • MDN Web Docs: Regular expressions — JavaScript, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_expressions - dostęp 2026-03-02
  • MDN Web Docs: RegExp (obiekt JavaScript), https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp - dostęp 2026-03-02
  • PCRE2 Documentation: Pattern Syntax (quantifiers, character classes), https://www.pcre.org/current/doc/html/pcre2pattern.html - dostęp 2026-03-02

Materiały:

  • Dokumentacja składni wyrażeń regularnych używana w danym języku (np. JavaScript lub PCRE)
  • Ćwiczenia: dopasowywanie przykładów tekstu do wzorców regex i wskazywanie, który znak powoduje błąd
  • Materiały o walidacji danych wejściowych w aplikacjach webowych (front-end i back-end)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego