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

Regex 带有正则表达式的IDN(域)的验证代码,regex,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 这是可以的,但这段代码不验证诸如öü.com或öü 我的域格式是: example.com 此外,我不想: www.example.com 重要提示:用户可以添加域 有2个扩展名,如example.co.uk 您可以通过将a-z替换为\pLId

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

/^([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
这是可以的,但这段代码不验证诸如öü.com或öü

我的域格式是:

  • example.com
此外,我不想:

  • www.example.com
重要提示:用户可以添加域

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

您可以通过将
a-z
替换为
\pL
Idn,例如
भारत.icom.museum
在提交DNS解析之前,使用中定义的编码

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

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

对于php,大多数示例都使用“[a-zA-Z0-9]”代码,就像我的代码一样,但不幸的是,这段代码不支持IDN。谢谢,很难找到允许非拉丁字符的烘焙正则表达式。