gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:27:49 27 4
gpt4 key购买 nike

我想仅使用正则表达式验证主机名。

主机名(或 DNS 术语中的“标签”)传统上由 RFC 952 和 RFC 1123 定义,并且可能由以下有效字符组成。

列表项

  • 从头到尾;大写字符
  • a 到 z ;小写字符
  • 0 到 9 ;数字字符 0 到 9
  • -;破折号

规则说:

  • 主机名(标签)可以以字母或数字开头或结尾
  • 主机名(标签)不得以“-”(破折号)开头或结尾
  • 主机名(标签)不得由所有数字值组成
  • 主机名(标签)最多可包含 63 个字符

您将如何编写正则表达式来验证主机名?

最佳答案

^(?![0-9]+$)(?!-)[a-zA-Z0-9-]{,63}(?<!-)$

我使用以下用 Python 编写的测试床来验证它是否正常工作:

tests = [
('01010', False),
('abc', True),
('A0c', True),
('A0c-', False),
('-A0c', False),
('A-0c', True),
('o123456701234567012345670123456701234567012345670123456701234567', False),
('o12345670123456701234567012345670123456701234567012345670123456', True),
('', True),
('a', True),
('0--0', True),
]

import re
regex = re.compile('^(?![0-9]+$)(?!-)[a-zA-Z0-9-]{,63}(?<!-)$')
for (s, expected) in tests:
is_match = regex.match(s) is not None
print is_match == expected

关于regex - 用于验证 DNS 标签(主机名)的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063213/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com