Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

挠头,如何获取域名的根域?

  最近突然有了个获取某个域名根域的需求。最初我觉得这个很简单,一个正则分分钟的事。后来越想坑越大,到最后发现我完全无法解决这个问题,或者即使要解决也只有代价巨大的数据库方案。最后只能感叹这个 CNNIC 挖的坑简直太丧心病狂了。
  如果不考虑国家级的域名那简直是秒秒钟的事,比如获取 www.web-tinker.com 的根域 'www.web-tinker.com'.replace(/^.*?(?=[^.]+\.[^.]+$)/, '');   然而在国际顶级域名后面还可以有国家级的后缀,比如 google.co.kr、google.co.jp,这种级别要匹配就已经很困难了,如果要写出能匹配这种域名的正则就必须查表,把仅有的几个国际顶级域名找出来,然后允许在后面跟上一个国家域名。比如下面是一个不完全的匹配 'google.co.jp'.replace(/^.*?(?=[^.]+\.(?:[^.]+$|(?:com|co|net|org)\.[^.]))/, '');   国际顶级域名毕竟很有限,即使查表写个完整的也不至于让我抓狂。但是突然想想以前好像还看到过省级域名来着,比如 xxx.bj.cn、xxx.sh.cn。一开始我觉得这是假的!是化学的成份,是域名的特技!但这货确实存在啊!比如这么写 Cookie 无法生效,因为它不是一个完整的域名 document.cookie = 'a=1; Domain=bj.cn';   这么写才可以,因为 bj.cn 是北京的省级域名 document.cookie = 'a=1; Domain=xxx.bj.cn';   然而,没有这个省的话就可以随便用,比如下面这个也是 OK 的 document.cookie = 'a=1; Domain=xxx.cn';   于是我就凌乱了,这搞毛啊!?反正我是不想考虑这种东西了,直接无视掉好了。再讨论下去就已经是政治问题了。
网名:
54.226.58.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^