c# - 在 C# 中验证 FQDN

标签 c# regex fqdn

有人有正则表达式来验证合法的 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/

相关文章:

c# - 在 T-SQL 中返回重复行

c# - 测试类型是否是属性?

javascript - 连续文本框验证

regex - 从正则表达式构造字符串

ruby - 获取当前主机的 FQDN 的正确方法是什么?

windows - 将 powershell 命令的输出保存在变量中并在批处理脚本中使用它?

c# - N休眠;删除 child 会删除 parent 吗?

regex - 无法在 perl6 中编写语法来解析带有特殊字符的行

regex - cmd如何重命名序列号和目录名

https - 在 GKE 上为入口 Controller IP 地址配置 FQDN