Thare是新的国家域名和顶级域名,如“http://президент.рф/” - 适用于俄罗斯联邦域名,或http://example.新加坡适用于新加坡......
是否有正则表达式来验证这些域名?
我找到了这个:What is the best regular expression to check if a string is a valid URL?
但是当我尝试使用其中列出的一个表达式时 - PHP被忽略了:)
preg_match(): Compilation failed: character value in \x{...} sequence is too large at offset 81
P.S。
1)最后一部分由 @OmnipotentEntity
解决2)但主要问题 - 验证国际域 - 仍然存在,因为示例regexp无法很好地验证。
答案 0 :(得分:3)
使用“u”修饰符匹配unicode字符。您给出的示例仅使用“i”修饰符。
答案 1 :(得分:2)
不,没有正则表达式来验证这些域名。每个TLD对其IDN中允许的Unicode代码点(如果有)都有不同的规则。您需要一个非常大的查找表,必须保持最新状态才能知道哪些特定字符是合法的。
此外,还有关于是否可以在单个DNS标签中组合从左到右书写字符和从右到左字符的规则。
BTW,其他评论中提到的RFC已经过时了。最近批准的一套是RFC 5890 - 5895。