技术问询:使用JavaScript正则表达式解析URL语义组成部分
使用JavaScript正则表达式解析URL的语义组成部分
示例URL语义组件解析
以下是几个示例URL的语义组件拆解:
https://google.com:443 - https:// 为协议(protocol),:443 为端口(port) cdn.ajax.com - cdn 为服务标识(service),ajax.com 为域名(domain),cdn.ajax.com 为完全限定域名(FQDN) www.clients6.gc.google.com/project - clients6.gc 为子域名(subdomain),/project 为路径(path) www.google.com/?query=x&#hash=y - ?query=x& 为查询字符串(query string),#hash=y 为哈希字符串(hash string)
解析限制
无需解析用户/密码(存在安全隐患)或单个查询参数(不同实现差异较大,比如部分Java CGI工具使用;替代&)。
服务类前缀的处理标准
浏览器会在地址栏中隐藏www这类服务类前缀,因此服务类前缀不属于子域名已经成为业界事实标准(DNS管理员场景除外)。
多数浏览器、手机及应用都会按照这个标准处理www.及其他常见Web服务子域名前缀(如https://www.),解析器也应当遵循该标准。
标准解析示例
对于以下形式的URL:
www.sub.domain.google.com/path?query=x&#hash=y https://www.sub.domain.google.com/path?query=x&#hash=y https://www.sub.domain.google.com:443/path?query=x&#hash=y
语义链接解析器应返回如下结果:
{ "protocol": "https://", "fqdn": "www.sub.domain.google.com", "service": "www", "subdomain": "sub.domain", /* 不含www. */ "domain": "google.com", "port": "443", /* 可选字段 */ "path": "/path", "query": "query=x&", "hash": "hash=y" }
内容的提问来源于stack exchange,提问作者Wil
相关产品推荐
相关产品推荐

