Skip to content

Commit b3448e9

Browse files
authored
Merge pull request mouredev#2900 from KevinED11/main
reto #16 - python
2 parents 8afb021 + 6a49103 commit b3448e9

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

Roadmap/16 - EXPRESIONES REGULARES/python/KevinED11.py

+21-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class SearchPattern(StrEnum):
1616

1717

1818
@lru_cache
19-
def generic_searcher(pattern: str, text: str) -> IntTuple:
19+
def generic_searcher(pattern: SearchPattern, text: str) -> IntTuple:
2020
return tuple(re.findall(pattern, text))
2121

2222

@@ -28,19 +28,33 @@ def __call__(self, value: str) -> bool: ...
2828

2929

3030
class ValidationPattern(StrEnum):
31+
pass
32+
33+
34+
class EmailValidationPattern(ValidationPattern):
3135
EMAIL = r"^\w+@\w+\.\w+$"
36+
EMAIL2 = r"^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$"
37+
EMAIL3 = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
38+
39+
40+
class PhoneValidationPattern(ValidationPattern):
3241
PHONE = r"^\+?\d{10, 15}$"
42+
PHONE2 = r"^\+?1?\d{9,15}$"
43+
44+
45+
class UrlValidationPattern(ValidationPattern):
3346
URL = r"^https?://.+$"
47+
URL2 = r"^(http|https)://[a-zA-Z0-9-\.].+\.[a-zA-Z]{2,4}(/\S*)?$"
3448

3549

3650
@lru_cache
37-
def generic_validator(pattern: str, value: str) -> bool:
38-
return re.search(pattern, value) is not None
51+
def generic_validator(pattern: ValidationPattern, value: str) -> bool:
52+
return re.match(pattern, value) is not None
3953

4054

41-
validate_email = partial(generic_validator, pattern=ValidationPattern.EMAIL)
42-
validate_phone = partial(generic_validator, pattern=ValidationPattern.PHONE)
43-
validate_url = partial(generic_validator, pattern=ValidationPattern.URL)
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)
4458

4559

4660
def execute_validator(validator: ValidatorFn, value: str) -> bool:
@@ -59,7 +73,7 @@ def main() -> None:
5973
email_result = execute_validator(validator=validate_email, value="[email protected]")
6074
phone_result = execute_validator(validator=validate_phone, value="000000000000")
6175
url_result = execute_validator(
62-
validator=validate_url, value="https://www.google.com"
76+
validator=validate_url, value="https://wwwgoogle.com"
6377
)
6478
print(email_result, phone_result, url_result, sep=Separator.LINE_BREAK)
6579

0 commit comments

Comments
 (0)