寻找主机名验证正则表达式。
Regular expression to match DNS hostname or IP Address?
在那个链接中,男士们提出了一个体面的正则表达式。我有一些问题/疑问:
1abcd
一样被允许(经过验证)
我们的本地网络)abc.def.gh
是有效的主机名
同样,不是吗。奇怪,但也找不到任何可以验证主机名字符串的.NET类(是这种情况吗?)。任何建议都将受到高度赞赏。
更新:对于任何类/方法提案 - 请提供一些适用于.NET / C#和SilverLight的内容。
答案 0 :(得分:2)
Uri.CheckHostName是一种可以帮助你的方法吗? 如果无法识别主机名,则结果为"Unknown"。
答案 1 :(得分:2)
在提议的正则表达式中,点可能 只出现一次。我想是的 abc.def.gh是一个有效的主机名 好吧,不是吗。
点可能出现不止一次。测试正则表达式here,您将看到它匹配。
正则表达式的相关片段(第一部分是):
([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*
在Windows计算机/网络名称上 像1abcd一样被允许(验证 我们的本地网络)
来自wikipedia:
原始规格 RFC 952中的主机名,强制要求 标签不能以数字或数字开头 用连字符,一定不能以 连字符。但是,随后 规范(RFC 1123)允许 主机名标签以数字开头。
答案 2 :(得分:0)
(?i)(?=.{5,20}$)^(([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])\.)*([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])$
说明:
(?i)
- 忽略大小写
(?=.{5,20}$)
- 将字符串长度限制在5到20个字符之内。
^(([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])\.)*([a-z\d]|[a-z\d][a-z\d\-]*[a-z\d])$
- 接受任何字母和数字以及连字符和点