使用正则表达式在C#中验证FQDN

时间:2011-02-06 13:10:25

标签: c# regex fqdn

我在C#中编写了以下模式来验证从用户收到的FQDN:

(`?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[0-9a-zA-Z]{1,})$)

我想允许用户输入以下FQDN:

<name>.<letter><digit>

例如“aa.a1”。对于“aa.a1”,我的正则表达式将FQDN检测为无效,对于“aa.1a”,它将其检测为有效。有谁知道为什么?

2 个答案:

答案 0 :(得分:3)

您可以将字符串加载到Uri中,而不是使用RegEx,并使用不同的方法和属性来确定它是否为FQDN。

Uri uri = new Undri(myFQDN);
string host = uri.Host;
bool isAbsolute = uri.IsAbsoluteUri;

答案 1 :(得分:2)

我甚至不会尝试解码那个巨大的正则表达式,而是使用Uri.IsWellFormedUriString方法。那已经做你想要的了。