我目前正在研究一个"正确的"URI验证器,目前这一切都归结为主机名验证; 剩下的并不是那么棘手.
我坚持使用IDN主机名标签(即包含Unicode;此时已经解码了可能的punycode编码字符串).
我的第一个想法基本上是一个不支持IDN的TLD正则表达式,而那些支持IDN的一个正则表达式.这可能基于Mozilla的支持IDN的TLD列表.分别
^[a-zA-Z0-9\-]+$和^[a-zA-Z0-9\-\p{L}]+$.但是,这不是一个理想的情况,因为每个IDN注册商都可以决定允许哪些字符.
我正在寻找的是各种TLD中允许的Unicode字符的正确,一致,最新的数据表.现在看起来我必须在俄罗斯和中国的注册网站上找到所有数据(这非常困难).
所以在我尝试自己收集所有这些数据之前,我想知道这样的列表是否已经存在.或者有更好的方法,最佳/常见的做法等?(我希望验证尽可能严格.)