编程语言
首页 > 编程语言> > 在C#中验证FQDN

在C#中验证FQDN

作者:互联网

有没有人有正则表达式来验证合法的FQDN?

现在,我使用这个正则表达式:

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

然而,当“aa.aa”有效时,此正则表达式导致“aa.a”无效.

有谁知道为什么?

最佳答案:

这是一个较短的模式:

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

至于为什么模式将“aa.a”确定为无效而“aa.aa”为有效,这是因为{2,} – 如果你将2改为1以便它是

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

它应该认为“aa.a”和“aa.aa”都是有效的.

string pattern = @"(?=^.{1,254}$)(^(?:(?!\d+\.)[a-zA-Z0-9_\-]{1,63}\.?)+(?:[a-zA-Z]{1,})$)";
bool isMatch = Regex.IsMatch("aa.a", pattern);

isMatch对我来说是正确的.

标签:c,regex,fqdn
来源: https://codeday.me/bug/20190515/1109711.html