我正在写一些处理URL的代码,我想确保我不会遗漏一些奇怪的案例......
除了以下主机之外是否有任何有效字符:AZ,0-9," - "和"."?
(这包括可以在子域中的任何东西,等等.基本上,在//和第一个/之间的任何东西)
谢谢!
And*_*are 26
请参阅有效主机名的限制:
主机名由一系列与点连接的标签组成,所有域名都是1.例如,"en.wikipedia.org"是主机名.每个标签的长度必须介于1到63个字符之间,整个主机名最多包含255个字符.
RFC要求主机名的标签可能只包含ASCII字母'a'到'z'(不区分大小写),数字'0'到'9'和连字符.主机名标签不能以连字符开头或结尾.不允许使用其他符号,标点字符或空格.
取决于您在哪个级别进行验证(在 URL 转义之前或之后)。如果您尝试验证用户输入,那么它可以超越 ASCII(带有大量 Unicode)。
见http://en.wikipedia.org/wiki/Internationalized_domain_name
如果您在所有转义和“punycode”完成后尝试验证,则验证没有意义,因为旧的 RFC 已经保证它只包含有效字符。