@@ -28,11 +28,21 @@ def __call__(self, value: str) -> bool: ...
2828
2929
3030class ValidationPattern (StrEnum ):
31+ pass
32+
33+
34+ class EmailValidationPattern (ValidationPattern ):
3135 EMAIL = r"^\w+@\w+\.\w+$"
3236 EMAIL2 = r"^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$"
3337 EMAIL3 = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
38+
39+
40+ class PhoneValidationPattern (ValidationPattern ):
3441 PHONE = r"^\+?\d{10, 15}$"
3542 PHONE2 = r"^\+?1?\d{9,15}$"
43+
44+
45+ class UrlValidationPattern (ValidationPattern ):
3646 URL = r"^https?://.+$"
3747 URL2 = r"^(http|https)://[a-zA-Z0-9-\.].+\.[a-zA-Z]{2,4}(/\S*)?$"
3848
@@ -42,9 +52,9 @@ def generic_validator(pattern: ValidationPattern, value: str) -> bool:
4252 return re .match (pattern , value ) is not None
4353
4454
45- validate_email = partial (generic_validator , pattern = ValidationPattern .EMAIL )
46- validate_phone = partial (generic_validator , pattern = ValidationPattern .PHONE )
47- validate_url = partial (generic_validator , pattern = ValidationPattern .URL2 )
55+ validate_email = partial (generic_validator , pattern = EmailValidationPattern .EMAIL )
56+ validate_phone = partial (generic_validator , pattern = PhoneValidationPattern .PHONE )
57+ validate_url = partial (generic_validator , pattern = UrlValidationPattern .URL2 )
4858
4959
5060def execute_validator (validator : ValidatorFn , value : str ) -> bool :
@@ -63,7 +73,7 @@ def main() -> None:
6373 email_result = execute_validator (validator = validate_email , value = "a@a.com" )
6474 phone_result = execute_validator (validator = validate_phone , value = "000000000000" )
6575 url_result = execute_validator (
66- validator = validate_url , value = "https://www.google .com"
76+ validator = validate_url , value = "https://wwwgoogle .com"
6777 )
6878 print (email_result , phone_result , url_result , sep = Separator .LINE_BREAK )
6979
0 commit comments