We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 70de324 commit 22399c3Copy full SHA for 22399c3
1 file changed
src/validators/domain.py
@@ -83,6 +83,11 @@ def domain(
83
service_record = r"_" if rfc_2782 else ""
84
trailing_dot = r"\.?$" if rfc_1034 else r"$"
85
86
+ encoded = value.encode("idna").decode("utf-8")
87
+ if len(encoded.rstrip(".")) > 253:
88
+ # ref: RFC 1035, presentation form is limited to 253 characters
89
+ return False
90
+
91
return not re.search(r"\s|__+", value) and re.match(
92
# First character of the domain
93
rf"^(?:[a-z0-9{service_record}]"
@@ -94,7 +99,7 @@ def domain(
94
99
+ r"+[a-z0-9][a-z0-9-_]{0,61}"
95
100
# Last character of the gTLD
96
101
+ rf"[a-z]{trailing_dot}",
97
- value.encode("idna").decode("utf-8"),
102
+ encoded,
98
103
re.IGNORECASE,
104
)
105
except UnicodeError as err:
0 commit comments