使用正则表达式检查Python域名
我想为域名设置一个用户输入检查。我在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})*$'