Regular Expressions
Sprawdzanie poprawności hasła regex
Szukaj…
Hasło zawierające co najmniej 1 wielką literę, 1 małą literę, 1 cyfrę, 1 znak specjalny i ma długość co najmniej 10
Ponieważ znaki / cyfry mogą znajdować się w dowolnym miejscu ciągu, wymagamy uprzedzenia. Lookaheads mają zero width
co oznacza, że nie zużywają żadnego łańcucha. Krótko mówiąc, pozycja sprawdzania resetuje się do pierwotnej pozycji po spełnieniu każdego warunku wyprzedzenia.
Założenie : - uznawanie znaków innych niż słowa za specjalne
^(?=.{10,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$
Zanim przejdziemy do wyjaśnienia, spójrzmy, jak działa wyrażenie regularne ^(?=.*[az])
( długość nie jest tutaj brana pod uwagę ) w łańcuchu 1$d%aA
Kredyt obrazu : - https://regex101.com/
Rzeczy do zauważenia
- Sprawdzanie rozpoczyna się od początku łańcucha ze względu na tag zakotwiczenia
^
. - Pozycja sprawdzania jest resetowana do startu po spełnieniu warunku wyprzedzenia.
Podział Regex
^ #Starting of string
(?=.{10,}$) #Check there is at least 10 characters in the string.
#As this is lookahead the position of checking will reset to starting again
(?=.*[a-z]) #Check if there is at least one lowercase in string.
#As this is lookahead the position of checking will reset to starting again
(?=.*[A-Z]) #Check if there is at least one uppercase in string.
#As this is lookahead the position of checking will reset to starting again
(?=.*[0-9]) #Check if there is at least one digit in string.
#As this is lookahead the position of checking will reset to starting again
(?=.*\W) #Check if there is at least one special character in string.
#As this is lookahead the position of checking will reset to starting again
.*$ #Capture the entire string if all the condition of lookahead is met. This is not required if only validation is needed
Możemy również użyć niechcianej wersji powyższego wyrażenia regularnego
^(?=.{10,}$)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\W).*$
Hasło zawierające co najmniej 2 wielkie litery, 1 małe litery, 2 cyfry i ma długość co najmniej 10
Można to zrobić z niewielką modyfikacją powyższego wyrażenia regularnego
^(?=.{10,}$)(?=(?:.*?[A-Z]){2})(?=.*?[a-z])(?=(?:.*?[0-9]){2}).*$
lub
^(?=.{10,}$)(?=(?:.*[A-Z]){2})(?=.*[a-z])(?=(?:.*[0-9]){2}).*
Zobaczmy, jak proste wyrażenie regularne ^(?=(?:.*?[AZ]){2})
działa na łańcuchu abcAdefD
Kredyt obrazu : - https://regex101.com/