如何使用正则表达式获取url的各部分?如协议类型、域名、端口、路径.....
协议类型
- 协议类型类型为多个字母组成(大写或小写)
- 右面紧跟“:”
域名
- 域名为多个字母(大写或小写)和数字组成
- 其次左面紧跟“//”
因为匹配范围不包含“:”和“/”所以不用担心捕获到后面的端口和路径等
端口
- 端口为数字组成
- 其次左面紧跟“:”
- 不一定存在
路径
- 路径为多个字母(大写或小写)和数字以及各种符号组成
- 其次左面紧跟“/”
- 右面紧跟“?”
- 不一定存在
1、3、4可缩写为除?以外的零或多个字符
查询
- 路径为多个字母(大写或小写)和数字以及各种符号组成
- 其次左面紧跟“?”
- 不包含“#”
- 不一定存在
1、3、4可缩写为除#以外的零或多个字符
完整的正则表达式
let parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/