1

我在 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”,它检测到它是有效的。有谁知道为什么?

4

2 回答 2

3

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

Uri uri = new Undri(myFQDN);
string host = uri.Host;
bool isAbsolute = uri.IsAbsoluteUri;
于 2011-02-06T13:14:33.583 回答
2

我什至不会尝试解码那个巨大的正则表达式,而是使用Uri.IsWellFormedUriString方法。这已经可以满足您的需求。

于 2011-02-06T13:18:02.453 回答