我想用 Javascript 从电子邮件地址获取域部分。从电子邮件中提取域很容易,例如split:“joe@example.com”,即example.com.
但是,电子邮件也以“joe@subdomain1.example.com.uk”之类的形式出现,其中的域是example.com.uk,而不是subdomain1.example.com.uk。这里的问题是subdomain1可以错误地将其视为域的一部分。
我如何可靠地做到这一点?
乍一看,这确实不是一个微不足道的问题。幸运的是,有一些库可以解决这个问题,tld-extract是一种流行的选择,它使用 Mozilla 的公共后缀列表(基于志愿者的列表)。用法是
var parser = require('tld-extract');
console.log( parser("www.google.com") );
console.log( parser("google.co.uk") );
/**
* >> { tld: 'com', domain: 'google.com', sub: 'www' }
* >> { tld: 'co.uk', domain: 'google.co.uk', sub: '' }
*/
Run Code Online (Sandbox Code Playgroud)
要从电子邮件地址中提取服务器地址部分,首先按@字符拆分,如下所示
const email = "john@sub.domain.com"
const address = email.split('@').pop()
const domain = parser(address).domain
Run Code Online (Sandbox Code Playgroud)
有关问题解决方案的更多深入讨论,请查看类似 python 库的README。
另一方面,tldextract 通过根据公共后缀列表 (PSL) 查找当前存在的 gTLD 和 ccTLD 来了解所有 gTLD 和 ccTLD 的外观。所以,给定一个 URL,它从它的域中知道它的子域,从它的国家代码中知道它的域。
请务必了解公共后缀列表网站上的列表,并了解它是基于志愿者工作的,可能并不总是详尽无遗。
公共后缀列表是一项跨供应商计划,旨在提供准确的域名后缀列表,由 Mozilla 志愿者的辛勤工作和注册管理机构提交的内容维护,我们非常感谢他们。
由于没有并且仍然没有算法方法可以找到可以为特定顶级域注册域的最高级别(策略因每个注册机构而异),唯一的方法是创建一个列表。这是公共后缀列表的目的。
| 归档时间: |
|
| 查看次数: |
12843 次 |
| 最近记录: |