首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`validators.url`:`validators.url`不接受1-9中的端口号,但接受大于65535的端口?

`validators.url`:`validators.url`不接受1-9中的端口号,但接受大于65535的端口?
EN

Stack Overflow用户
提问于 2018-12-24 07:55:28
回答 1查看 58关注 0票数 1

事实: TCP/UDP端口号范围是从1-65535启动的。

但是,我刚刚注意到validators.url不接受1-10的端口号?

代码语言:javascript
复制
>>> for i in range(1,11): validators.url('http://example.com:%s' %i)
...
ValidationFailure(func=url, args={'value': 'http://example.com:1', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:2', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:3', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:4', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:5', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:6', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:7', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:8', 'public': False})
ValidationFailure(func=url, args={'value': 'http://example.com:9', 'public': False})
True
>>>

它还接受大于65535的端口号。

代码语言:javascript
复制
>>> for i in range(65535,65538): validators.url('http://example.com:%s' %i)
...
True
True
True
>>>

这种不正常的行为有什么原因吗?

是否可以只接受1-65535与Python3 validators.url之间的有效端口号?

EN

回答 1

Stack Overflow用户

发布于 2018-12-24 08:18:53

正如在医生们中所解释的,validators.url不是魔术,而是依赖于正则表达式。在端口的具体情况下,判罚

代码语言:javascript
复制
    // port number (optional)
"(?::\\d{2,5})?"

这意味着任何在2位到5位之间的数字都能工作。因此,01将工作,但个位数整数不能工作。

如果无效的端口号对您来说是一个问题,则始终可以在validators.url之上添加一个限制。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53910689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档