如果输入正确的FQDN,是否有快速而肮脏的方式进行验证?请记住,没有DNS服务器或Internet连接,因此验证必须通过regex / awk / sed完成。
有任何想法吗?
现在更难了,国际化的域名和几千(!)个新的TLD。
容易的部分是您仍然可以在“。”上分割组件。
您需要可注册TLD的列表。有一个网站:
https://publicsuffix.org/list/effective_tld_names.dat
您只需检查ICANN认可的。请注意,可注册TLD可以有多个组件,如“co.uk”。
然后有IDN和punycode。域现在是Unicode。例如,
“xn – nnx388a”相当于“台湾”。这两个都是有效的TLD。
对于punycode转换代码,请参见“http://golang.org/src/pkg/net/http/cookiejar/punycode.go”。
检查每个域组件的语法也有新的规则。参见RFC5890
http://tools.ietf.org/html/rfc5890
组件可以是A标签(仅限ASCII)或Unicode。
ASCII标签遵循旧的语法,或者开始“xn--”,在这种情况下,它们是一个punycode
Unicode字符串的版本。
Unicode的规则非常复杂,并在RFC5890中给出。这些规则旨在防止从左到右和从右到左的集合混合字符。
对不起,没有简单的答案。