解析域
将一个 URL 分成子域,域和顶级域. 提供类型脚本打字.
由于不同国家和组织对域的处理不同,将一个URL分割为子域,域和顶级域部分并不是简单的正则解说. 解析域 使用a 大型已知顶级域列表 从publicsaftix.org可以识别域名的不同部分.
此模块使用 三进制 引擎盖下的数据结构,以确保最小可能的库大小和最快的查询. 图书馆大约为30KB精密和被取出。 由于publicsaftix.org经常更新,数据结构建立在 npm install 作为 postinstall 钩. 如果在这一步骤中出现出错,图书馆会回到一个在出版时已经建成的预建列表.
安装
npm install parse-domain
使用量
// import the module
const parseDomain = require("parse-domain");
// long subdomains can be handled
expect(parseDomain("some.subdomain.example.co.uk")).to.eql({
subdomain: "some.subdomain",
domain: "example",
tld: "co.uk"
});
// protocols, usernames, passwords, ports, paths, queries and hashes are disregarded
expect(parseDomain("https://user:[email protected]:8080/some/path?and&query#hash")).to.eql({
subdomain: "",
domain: "example",
tld: "co.uk"
});
// unknown top-level domains are ignored
expect(parseDomain("unknown.tld.kk")).to.equal(null);
// invalid urls are also ignored
expect(parseDomain("invalid url")).to.equal(null);
expect(parseDomain({})).to.equal(null);
引入自定义图案
// custom top-level domains can optionally be specified
expect(parseDomain("mymachine.local",{ customTlds: ["local"] })).to.eql({
subdomain: "",
domain: "mymachine",
tld: "local"
});
// custom regexps can optionally be specified (instead of customTlds)
expect(parseDomain("localhost",{ customTlds:/localhost|\.local/ })).to.eql({
subdomain: "",
domain: "",
tld: "localhost"
});
有时使用帮助函数应用自定义Tlds 参数会有帮助
function parseLocalDomains(url) {
return parseDomain(url, {
customTlds: /localhost|\.local/
});
}
expect(parseLocalDomains("localhost")).to.eql({
subdomain: "",
domain: "",
tld: "localhost"
});
expect(parseLocalDomains("mymachine.local")).to.eql({
subdomain: "",
domain: "mymachine",
tld: "local"
});
API 密码
parseDomain(url: string, options: ParseOptions): ParsedDomain|null
回返 null 若为 url 拥有未知的图案,或者如果它不是一个有效的url.
ParseOptions
{
// A list of custom tlds that are first matched against the url.
// Useful if you also need to split internal URLs like localhost.
customTlds: RegExp|Array<string>,
// There are lot of private domains that act like top-level domains,
// like blogspot.com, googleapis.com or s3.amazonaws.com.
// By default, these domains would be split into:
// { subdomain: ..., domain: "blogspot", tld: "com" }
// When this flag is set to true, the domain will be split into
// { subdomain: ..., domain: ..., tld: "blogspot.com" }
// See also https://github.com/peerigon/parse-domain/issues/4
privateTlds: boolean - default: false
}
ParsedDomain
{
tld: string,
domain: string,
subdomain: string
}
许可证
取消许可证
