This repository was archived by the owner on Sep 9, 2026. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathvalidation.py
More file actions
129 lines (112 loc) · 3.62 KB
/
Copy pathvalidation.py
File metadata and controls
129 lines (112 loc) · 3.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
"""This module checks the validity of a number, phone numbers and email addresses"""
def valid_number(number):
"""Validates a whole number (optional leading '+').
Validates both positive and negative numbers
Parameter -> number: Input to be validated"""
number = str(number).strip()
if not number:
return False
if number.startswith("+") or number.startswith("-"):
number = number[1:]
if not number:
return False
for ch in number:
if not ch.isdigit():
return False
return True
def valid_decimal_number(number):
"""Validates both a whole number and a decimal (optional leading '+').
Number can either be negative or positive
Parameter -> number: Input to be validated"""
number = str(number).strip()
dot_count = 0
if not number:
return False
if number.startswith(".") or number.endswith("."):
return False
if number.startswith("+") or number.startswith("-"):
number = number[1:]
if not number:
return False
if number.startswith(".") or number.endswith("."):
return False
if "." in number:
dot_count = number.count(".")
if dot_count > 1:
return False
for ch in number:
if ch == ".":
continue
if not ch.isdigit():
return False
return True
def valid_phone(number):
"""Runs a validation on the validity of a phone number
Parameter 1 -> number: Phone number to be validated"""
number = str(number)
starters = "0123456789+"
space_hyphen = " -"
if len(number) < 5:
return False
if number[0] not in starters or "+" in number[1:]:
return False
if number[1] in space_hyphen or number[1] == "+":
return False
cleaned = ""
for n in number:
if n in space_hyphen:
continue
cleaned += n
if 5 > len(cleaned) or len(cleaned) > 15:
return False
if not valid_number(cleaned[1:]):
return False
return True
def valid_mail(email):
"""Validates a provided email address.
Parameter 1 -> email: Email address to be validated"""
email = str(email)
index = len(email) - 1
symbols = "!\"#$%&'()*,/:;<=>?@[\\]^`{|}~"
if ".." in email:
return False
if "@" not in email:
return False
if " " in email:
return False
if email.startswith("@") or email.endswith("@"):
return False
if email.startswith(".") or email.endswith("."):
return False
at_count = email.count("@")
if at_count != 1:
return False
split_email = email.split("@")
local = split_email[0]
domain = split_email[-1]
for ch in local:
if ch in symbols:
return False
if "." not in domain:
return False
split_domain = domain.split(".")
tld = split_domain[-1]
if len(tld) < 2:
return False
is_letter = True
for ch in tld:
if not ch.isalpha():
is_letter = False
break
if not is_letter:
return False
return True
if __name__ == "__main__":
print("Check if the following inputs are valid:")
print(f"(1)\t56: {valid_number('56')}")
print(f"(2)\t5.6: {valid_decimal_number('5.6')}")
print(f"(3)\t6y: {valid_number('6y')}")
print(f"(4)\ttred: {valid_number('trred')}")
print(f"(5)\t+234+4536+789: {valid_phone('+234+4356+789')}")
print(f"(6)\t+-2348108687545: {valid_phone('+-2348108687545')}")
print(f"(7)\tqwerty@gmail.co.uk.ng: {valid_mail('qwerty@gmail.co.uk.ng')}")