关于正则表达式提取域名的一些妙用
背景
本人闲暇时刻喜欢搜藏一些域名出售,平时免不了做一些域名停放页之类的东西,想让域名得到最大程度的展示,就要在各式各样的环境下部署域名停放页,有免费的也有收费的,当然如果支持php或者类似动态语言的脚本的话,取主域名就简单的多了,有些免费的页面只支持html/js代码.为了通过url或者主机头来获取当前主域名,适应各式各样的环境,决定用js来实现!
目的
封装一个js方法,实现下面的目的,如:
传入 “abc.erji.domain.com.cn” 正确获取到 “domain.com.cn”
传入 “abc.erji.domain.com” 正确获取到 “domain.com”
传入 “erji.domain.com.cn” 正确获取到 “domain.com.cn”
传入 “domain.com.cn” 正确获取到 “domain.com.cn”
传入 “www.domain.com” 正确获取到 “domain.com”
传入 “domain.com” 正确获取到 “domain.com”
先来看看这个方法
function getMainHost(domains) {let key = `mh_${Math.random()}`;let keyR = new RegExp(`(^|;)\\s*${key}=12345`);let expiredTime = new Date(0);let domain = domains ? domains : location.hostname;//如果有传入域名,则使用传入的域名,如果没有传入,则获取当前URL的主机名let domainList = domain.split('.');let urlItems = [];// 主域名一定会有两部分组成urlItems.unshift(domainList.pop());// 慢慢从后往前测试if(domains) {urlItems.unshift(domainList.pop());let mainHost = urlItems.join('.');return mainHost;} else {while(domainList.length) {urlItems.unshift(domainList.pop());let mainHost = urlItems.join('.');let cookie = `${key}=${12345};domain=.${mainHost}`;document.cookie = cookie;//如果cookie存在,则说明域名合法if(keyR.test(document.cookie)) {document.cookie = `${cookie};expires=${expiredTime}`;return mainHost;}}}
}
经过测试如果传入类似www.domain.com.cn这种的二级域名得到的却是com.cn,显然不是我们想要的结果.
优化一下:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
