Wyrażenia regularne

0

Taka sytuacja, mam pesel i nazwisko, jeśli się zgadza płeć i końcówka nazwiska, -ska lub -ski
to podświetla, czyli jak jest poprawne to takie wartosći są porządane
Pytanie: jak sprawdzić poprawność danych, przykład:
jeśli kobieta(przedostatni numer peselu parzysty) i końcówka -ska TRUE
jeśli kobieta(przedostatni numer peselu parzysty) i końcówka -ski FALSE
(mamy 2 końcówki, -ski i -ska)

Mam wyrażenie, ^\d{9}([2468]{1})|\d.+ski$
i zrobiłem coś takiego aby dodać warunek jeśli liczby są inne niż parzyste, to aby sprawdziło czy końcówka to -ski,
ale że to robiłem, niżej pokazane jak:

^\d{9}([2468]{1})|(\d.+ski$)\d.+ska$

96112103678 Kowalski
96112103668 Kowalska

0

O coś takiego chodzi?

^\d{10}(([2468].*ska)|([13579].*ski))$

EDIT - To nie działa ;)

0

no nie działa. atomal
te 2 wartości
96112103678 Kowalski
96112103668 Kowalska
muszą byc zaakceptowane, a akceptuje tylko 2 część, mam włączone multiline

0

Żeby tak to sprawdzać Musisz zrobić alternatywę:
https://regex101.com/r/Q3FO4p/1
Pierwszy nawias jest z nieparzystą i "ski", a drugi z parzystą i "ska". Regex101 z prawej strony wszystko dokładnie tłumaczy.
EDIT: Capslocków nie zauważyłem:) https://regex101.com/r/Q3FO4p/2

0

Tylko 1 pytanie, dlaczego $ jest na końcu, przecież jest tak
^ na początku zdania musi być ten cały duży nawias () ale na końcu dałeś $ do czego on się odnosi?

taki zapis ^(([\d]{9}[13579]\d [a-zA-Z]+ski)$|([\d]{9}[02468]\d [a-zA-Z]+ska)$) to rozumiem ale taki:
to nie ^(([\d]{9}[13579]\d [a-zA-Z]+ski)|([\d]{9}[02468]\d [a-zA-Z]+ska))$

0
bartek164 napisał(a):

Tylko 1 pytanie, dlaczego $ jest na końcu, przecież jest tak
^ na początku zdania musi być ten cały duży nawias () ale na końcu dałeś $ do czego on się odnosi?

taki zapis ^(([\d]{9}[13579]\d [a-zA-Z]+ski)$|([\d]{9}[02468]\d [a-zA-Z]+ska)$) to rozumiem ale taki:
to nie ^(([\d]{9}[13579]\d [a-zA-Z]+ski)|([\d]{9}[02468]\d [a-zA-Z]+ska))$

Sygnalizuje koniec.

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