Mam regex, który został dla mnie napisany dla haseł:
~^[a-z0-9!@#$%^&*()]{8,16}$~i
Ma pasować do ciągów znaków alfanumerycznychi symbole 8-16 znaków. Teraz muszę usunąć wymagania dotyczące minimalnej i maksymalnej długości, ponieważ muszę podzielić komunikaty o błędach, aby ułatwić obsługę - próbowałem po prostu wyjąć część {8,16}, ale potem to się psuje. Jak mam to zrobić? Dzięki z góry.
Odpowiedzi:
2 dla odpowiedzi № 1Rozumiem, że wykonujesz osobne kontrole dla zbyt długich lub zbyt krótkich łańcuchów, a to wyrażenie regularne upewnia się tylko, że nie ma żadnych nieprawidłowych znaków. Powinno to zrobić:
~^[a-z0-9!@#$%^&*()]+$~i
+
znaczy jeden lub więcej, *
znaczy zero lub więcej; prawdopodobnie nie ma znaczenia, którego używasz.
Pozbyłem się również niepotrzebnych ukośników; żaden z tych znaków nie ma żadnego specjalnego znaczenia w klasie znaków (to znaczy w nawiasach kwadratowych).