具有正则表达式(正则表达式)的IDN(域)的验证代码

时间:2014-05-11 14:00:46

标签: regex

我想用正则表达式检查域名。我的旧代码是:

/^([a-z0-9]+([-a-z0-9]*[a-z0-9]+)?.){0,}([a-z0-9]+([-a-z0-9]*[a-z0-9]+)?){1,63}(.[a-z0-9]{2,7})+$/i

它很好,但是这段代码不会验证IDN(国际化域名),例如öü.com或öü.öü

我的域格式为:

  • example.com

此外,我不想要:

重要提示:用户可以添加域名;

  • 有2个扩展名,例如example.co.uk

2 个答案:

答案 0 :(得分:3)

您可以通过a-z

替换\pL来添加对IDN的支持

答案 1 :(得分:2)

在提交DNS解析之前,

भारत.icom.museum使用Punycode编码,如RFC 3492中所定义。

您似乎正在使用php,基于此,您应该使用idn_to_ascii()函数转换idn,例如:

echo idn_to_ascii("भारत.icom.museum");
//xn--h2brj9c.icom.museum