使用正则表达式检查Python域名

0 投票
2 回答
7768 浏览
提问于 2025-04-17 08:10

我想为域名设置一个用户输入检查。我在StackOverflow上找到了一个帖子,链接是检查字符串中的有效域名?,里面的答案是:r'[a-zA-Z\d-]{,63}(.[a-zA-Z\d-]{,63})*'。这个正则表达式在概念上似乎符合我的需求,但当我用re.match测试一个超过63个字符的字符串时,它仍然返回'true'。

当我用group()测试结果时,它返回的是前63个字符,这样是有道理的。那么,能不能告诉我我哪里做错了?在这种情况下,使用Match操作是否正确,还是我需要做其他什么事情来确保字符串被正确测试?

谢谢。

2 个回答

1

你可以试试这个:

^[a-z0-9]([a-z0-9-]+\.){1,}[a-z0-9]+\Z

以下是一些例子:

  • w3.example.com [匹配]
  • example.com [匹配]
  • w3.site-example.com [匹配]
  • -w3.example.com [不匹配]
  • example.buzz [匹配]
  • .com [不匹配]
  • EXAMPLE.com [不匹配]
2

你应该把它和你的输入对齐,并确保“.”确实是指一个句号。

r'^[a-zA-Z\d-]{,63}(\.[a-zA-Z\d-]{,63})*$'

撰写回答