有人有正则表达式来验证合法的 FQDN 吗?
现在,我在这个正则表达式上使用:
(?=^.{1,254}$)(^(?:(?!\d+\.|-)[a-zA-Z0-9_\-]{1,63}(?!-)\.?)+(?:[a-zA-Z]{2,})$)
然而,此正则表达式导致“aa.a”无效,而“aa.aa”有效。
有人知道为什么吗?
最佳答案
这是一个较短的模式:
(?=^.{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# - 在 C# 中验证 FQDN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912520/