正则表达式基础图解教程(part 2)

920 阅读1分钟

如何使用正则表达式获取url的各部分?如协议类型、域名、端口、路径.....

协议类型

  1. 协议类型类型为多个字母组成(大写或小写)
  2. 右面紧跟“:”

域名

  1. 域名为多个字母(大写或小写)和数字组成
  2. 其次左面紧跟“//”

因为匹配范围不包含“:”和“/”所以不用担心捕获到后面的端口和路径等

端口

  1. 端口为数字组成
  2. 其次左面紧跟“:”
  3. 不一定存在

路径

  1. 路径为多个字母(大写或小写)和数字以及各种符号组成
  2. 其次左面紧跟“/”
  3. 右面紧跟“?”
  4. 不一定存在

1、3、4可缩写为除?以外的零或多个字符

查询

  1. 路径为多个字母(大写或小写)和数字以及各种符号组成
  2. 其次左面紧跟“?”
  3. 不包含“#”
  4. 不一定存在

1、3、4可缩写为除#以外的零或多个字符

完整的正则表达式

let parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/