17 lines
622 B
Python
17 lines
622 B
Python
import re
|
|
|
|
class Password(str):
|
|
def __new__(cls, value: str):
|
|
cls._validate(value)
|
|
return super().__new__(cls, value)
|
|
|
|
@classmethod
|
|
def _validate(cls, value: str):
|
|
if len(value) < 8:
|
|
raise ValueError("비밀번호는 8자 이상이어야 합니다.")
|
|
|
|
if not re.search(r"[A-Z]", value):
|
|
raise ValueError("비밀번호는 대문자 영어 1개 이상이어야 합니다.")
|
|
|
|
if not re.search(r'[!@#$%^&*(),.?":{}|<>]', value):
|
|
raise ValueError("비밀번호에는 특수문자가 1개 이상 포함되어야 합니다.") |