https://code.djangoproject.com/ticket/30924#ticket

The current regex in ​URLValidator does not allow numbers in the top-level 
domain

e.g. www.example.org33 raises a ValidationError

Rarely, if ever, do public top-level domains contain a number, however 
internal, private networks can certainly be configured with numbers present 
in the top-level domain. Thus it is important to handle these URIs without 
having to specify custom regex patterns to pass into the URLValidator.

The change can be achieved by replacing the following line in the 
URLValidator class:
r'(?:[a-z' + ul + '-]{2,63}'

with

r'(?:[a-z' + ul + r'0-9' + '-]{2,63}'

I think the same rationale for allowing dashes in the top level domain (
https://code.djangoproject.com/ticket/25452#comment:2) can be argued for 
this case

To note, the above line change would allow for addresses like
http://1.1.1.1.1
http://123.123.123

to pass, which are currently in invalid_urls.txt 
<https://github.com/django/django/blob/f57e174fa61e4c31213f6d0033fb9d647b463626/tests/validators/invalid_urls.txt#L45>

I am hoping this post generates some meaningful discussion around this 
proposed design change, thanks!


-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/b622e51b-3854-493f-b2f6-cd143157b8c2%40googlegroups.com.

Reply via email to