乐闻世界logo
搜索文章和话题

用于验证DNS标签(主机名)的正则表达式

4 个月前提问
2 个月前修改
浏览次数18

1个答案

1

在DNS标签(主机名)的验证中,我们需要遵循一定的规则。根据RFC 1035,DNS标签(即每个点分隔的部分)必须满足以下条件:

  1. 标签长度必须在1到63个字符之间。
  2. 标签只能包含字母(a-z,A-Z)、数字(0-9)和连字符(-)。
  3. 标签不能以连字符开始或结束。
  4. 标签不能全部由数字组成(但可以包含数字)。

基于以上规则,可以编写一个正则表达式来验证DNS标签。这里提供一个正则表达式的例子:

regex
^(?!-)(?!.*-$)(?!.*\d+$)[a-zA-Z\d-]{1,63}$

解释:

  • ^$ 分别表示字符串的开始和结束,确保整个字符串满足条件。
  • (?!-) 确保字符串不以连字符开始。
  • (?!.*-$) 确保字符串不以连字符结束。
  • (?!.*\d+$) 确保字符串不完全是数字。
  • [a-zA-Z\d-]{1,63} 确保字符串包含1到63个允许的字符(字母、数字、连字符)。

示例: 假设我们需要验证以下标签是否符合DNS规范:

  • example - 有效
  • ex-ample - 有效
  • -example - 无效,因为以连字符开头
  • example- - 无效,因为以连字符结尾
  • 123456 - 无效,因为完全由数字组成

此正则表达式会正确验证上述所有例子,确保符合DNS标签的规则。这样的验证机制可以应用在网络编程和系统配置中,确保用户输入或生成的主机名符合标准。

2024年7月12日 16:42 回复

你的答案