我有表单字段,接受表示波兰域名的字符串(以.pl结尾)
我需要检查:
你有什么建议这样的正则表达式应该是什么样的吗?
答案 0 :(得分:5)
您无法将所有可能的顶级域名与正则表达式匹配,并且 TLD的列表会不时更改。
使用库来提取TLD,例如tldextract
或publicsuffix
。
演示:
>>> import tldextract
>>> tldextract.extract('domainname.net.pl')
ExtractResult(subdomain='', domain='domainname', suffix='net.pl')
>>> tldextract.extract('www.domainname.net.pl')
ExtractResult(subdomain='www', domain='domainname', suffix='net.pl')
>>> from publicsuffix import PublicSuffixList
>>> psl = PublicSuffixList()
>>> psl.get_public_suffix('domainname.net.pl')
'domainname.net.pl'
>>> psl.get_public_suffix('www.domainname.net.pl')
'domainname.net.pl'
tldextract
为您提供解析结果,而publicsuffix
仅为您提供仍被视为一个实体的域名。
答案 1 :(得分:0)
如果你真的需要一个正则表达式,我会选择这样的东西:
^([a-z0-9-]+.)?([a-z0-9-]+).pl$