📜  正则表达式 url (1)

📅  最后修改于: 2023-12-03 14:55:53.886000             🧑  作者: Mango

正则表达式 URL

正则表达式(Regular Expression,简称Regex)是一种用于匹配字符串的强大工具。使用正则表达式,我们可以在字符串中查找、替换、拆分等操作,而不必遍历整个字符串。在Web开发中,正则表达式常用于匹配URL。

URL的基本结构

在正则表达式中,我们需要了解URL的基本结构,以便正确地进行匹配。一个典型的URL包含以下几个部分:

  • 协议(Protocol):指定数据传输的协议,如http、https、ftp等;
  • 域名(Domain Name):主机的名称或IP地址,如www.example.com、192.0.2.1等;
  • 端口号(Port):HTTP协议的默认端口为80,HTTPS协议的默认端口为443;
  • 路径(Path):访问资源的路径,如/index.html、/about等;
  • 查询参数(Query Params):可选的查询参数,如?name=value&age=18等;
  • 锚点(Anchor):标识文档中某个位置的锚点,如#section1、#footer等。

一个完整的URL示例如下:

https://www.example.com/path/to/resource.html?param1=value1&param2=value2#section1
正则表达式匹配URL

在正则表达式中,我们可以使用字符集、限定符、分组、反向引用等功能,来精确匹配URL的不同部分。

以下是常用的URL匹配正则表达式:

1、匹配完整的URL

^https?://[^\s/$.?#].[^\s]*$
  • 注释:

    • ^ 匹配字符串开始位置
    • http 字符串以http开头
    • s? 表示s可有可无
    • :// 匹配冒号和正斜杠
    • [^\s/$.?#] 指不匹配空格、正斜杠、美元符号、问号、井号
    • . 匹配一个任意字符
    • [^/\s]* 指不匹配斜杠或空格的任意字符
    • $ 匹配字符串的结尾位置

2、匹配协议

^https?://
  • 注释:

    • ^ 匹配字符串开始位置
    • http 字符串以http开头
    • s? 表示s可有可无
    • :// 匹配冒号和正斜杠

3、匹配域名

(?<=^https?://)[^/\s]+
  • 注释:

    • (?<=...) 零宽正向断言,表示匹配后面跟着...的位置
    • ^https?:// 匹配http或https协议
    • [^/\s]+ 指不匹配斜杠或空格的任意字符

4、匹配端口号

(?<=:)\d*
  • 注释:

    • (?<=...) 零宽正向断言,表示匹配后面跟着...的位置
    • : 匹配冒号
    • \d* 匹配0个或多个数字

5、匹配路径

/(?<=^https?://[^/\s]+)/[^?\s#]+
  • 注释:

    • (?<=...) 零宽正向断言,表示匹配后面跟着...的位置
    • ^https?:// 匹配http或https协议
    • [^/\s]+ 指不匹配斜杠或空格的任意字符
    • / 匹配斜杠
    • [^?\s#]+ 指不匹配问号、空格或井号的任意字符

6、匹配查询参数

(?<=\?|\&)[^=\s]+=[^&\s]+
  • 注释:

    • (?<=...) 零宽正向断言,表示匹配后面跟着...的位置
    • \?|\& 匹配问号或&符号
    • [^=\s]+ 指不匹配等号或空格的任意字符
    • = 匹配等号
    • [^&\s]+ 指不匹配&符号或空格的任意字符

7、匹配锚点

(?<=#)[^\s]+
  • 注释:

    • (?<=...) 零宽正向断言,表示匹配后面跟着...的位置
    • # 匹配井号
    • [^\s]+ 指不匹配空格的任意字符
总结

以上是常用的URL匹配正则表达式。使用正则表达式可以帮助我们快速地匹配URL的各个部分,方便我们进行Web开发中的各种操作。希望本文能够帮助你学会如何使用正则表达式匹配URL。