正则表达式验证无需域

时间:2017-09-13 08:58:03

标签: regex asp.net-mvc validation

所以我有以下Regex URL验证器:

[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+

它非常适合我的需求,除了它接受没有域名的网址,例如www.test

如何修改它以验证域名? (任何域名都不应该被接受.com

Demo

2 个答案:

答案 0 :(得分:2)

只需将正则表达式中的最后一个组强制显示为两次或多次:

[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,}){2,}

作为免责声明,并且@Wiktor可能会发表评论,您可能希望使用正则表达式模式来验证已经过彻底测试的URL。虽然这个答案可能会解决您的直接问题,但很可能存在其他边缘情况。

答案 1 :(得分:0)

你可以这样做来考虑unicode:

^\p{L}+\.\p{L}+(\.\p{L}{2,})+
  

\p{L}\p{Letter}:来自任何语言的任何类型的信件。

因此,我们匹配一组一个或多个字母(sudomain)后跟一个。然后是一组一个或多个字母(主域),后跟任意数量的组。两个或多个字母(域名后缀)。