可以在URL主机中显示的有效字符是什么?

时间:2009-07-15 19:22:50

标签: url host

我正在编写一些处理网址的代码,我想确保我不会遗漏一些奇怪的案例......

除了A-Z,0-9,“ - ”和“。”以外的主机是否有任何有效字符?

(这包括可以在子域中的任何东西,等等。基本上,在//和第一个/之间的任何东西

谢谢!

6 个答案:

答案 0 :(得分:25)

请参阅Restrictions on valid host names

  

主机名由一系列组成   与点串联的标签,如同   所有域名1。例如,   “en.wikipedia.org”是主机名。每   标签必须介于1到63之间   字符长,整个   hostname最多为255   字符。

     

RFC要求主机名的标签   可能只包含ASCII字母'a'   通过'z'(不区分大小写),   数字'0'到'9',和   连字符。主机名标签无法启动   或以连字符结尾。没有其他   符号,标点符号或   允许使用空格。

答案 1 :(得分:3)

不,这就是所有允许的

如果你想阅读,这里有一个参考: http://www.ietf.org/rfc/rfc1034.txt

答案 2 :(得分:3)

取决于您进行验证的级别(在URL转义之前或之后)。 如果您尝试验证用户输入,那么它可以超越ASCII(使用大块Unicode)。

请参阅http://en.wikipedia.org/wiki/Internationalized_domain_name

如果在完成所有转义和“punycode”之后尝试验证,则验证没有意义,因为已经保证旧RFC只包含有效字符。

答案 3 :(得分:1)

请记住,除了Internet的主机名规则外,DNS系统还可以自由创建他们喜欢的任何名称。 DNS服务器可以接受并回复8位二进制请求:DNS有线协议不禁止它。

这意味着对于内部LAN URL,您可能有不同的规则,例如主机名中出现的下划线。

答案 4 :(得分:0)

如果您想编写与官方W3C规范完全匹配的URL解析代码,请参阅www.w3.org/TR/url-1/上的文档。有关URL中主机的特定信息,请参阅第3节(主机)。

答案 5 :(得分:0)

有效的URL主机包括ascii字母,数字,最大长度为255的点(。)和连字符(-),以及最大长度为63的点分隔标签。连字符可以分隔字母数字序列,例如one-two.net,但不能出现在点分隔标签的开头或结尾,例如-one.two.com,one.two.com-或one-.two.com是无效的主机。

请参见https://tools.ietf.org/html/rfc1123#page-79https://tools.ietf.org/html/rfc952和假设的第1部分

这也是指向在线正则表达式工具的链接,以验证URL主机,该主机自2019年5月28日起https://www.regextester.com/23

此外,在验证引用https://tools.ietf.org/html/rfc1123#page-13的主机时,您应先在语法上检查主机的点分十进制数,然后再在DNS中查找它。