【发布时间】:2011-12-11 21:31:03
【问题描述】:
我希望为域名设置用户输入检查。我在 stackoverflow Check for a valid domain name in a string? 上找到了以下内容,答案是:r'[a-zA-Z\d-]{,63}(.[a-zA-Z\d-]{,63})*' 似乎满足我的需求(在概念上),但是当我使用 re.match 和大于 63 个字符的字符串对其进行测试时,它仍然返回“true”。
当我使用 group() 测试结果时,它返回前 63 个字符,这是有道理的。基于此,有人可以告诉我我做错了什么吗? Match 是在这种情况下使用的正确操作,还是我需要做其他事情才能正确测试字符串?
谢谢。
【问题讨论】:
-
哇,这是一个用于匹配域的可怕正则表达式。它会从字面上匹配这句话中的任何单词。不要使用那个正则表达式,它毫无价值。
-
你在使用匹配吗?还是其他方法之一?您错过了您提到的问题中的一个重要细节:点前必须有一个 \。一个简单的点表示“任何字符”,前面带有反斜杠的点表示“一个点”。因此正确的表达式是
r'[a-zA-Z\d-]{,63}(\.[a-zA-Z\d-]{,63})*'。也许这已经回答了你的问题。否则,请发布一些代码来澄清您的问题。 -
@frankp 很好,谢谢。 Typo 一定很喜欢他们。