Python - regexp检查字符串是否为TLD域

dea*_*ase 0 python regex

我有form的字段,接受表示波兰域名的字符串(以.pl结尾)

我需要检查一下:

  1. 如果string是一个正确的波兰域名(以.pl结尾)
  2. domain是顶级(即:domainname.pl)或第二级:domainname.net.pl,domainname.something.pl

你有什么建议这样的正则表达式应该是什么样的?

Mar*_*ers 5

你不能用一个正则表达式,以及什么样的列表匹配所有可能的顶级域一个顶级域名的变化不时.

使用库来提取TLD,例如tldextractpublicsuffix.

演示:

>>> 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'
Run Code Online (Sandbox Code Playgroud)

tldextract为您提供解析结果,同时publicsuffix仅为您提供仍被视为一个实体的域名.