regex - 正则表达式匹配特定域及其子文件夹
问题描述
我想匹配一个特定的域及其子域,不管它是如何输入的。在以下示例中,我想匹配所有“test.comif nothing comes after it (only a slash or query strings) OR if a specific folder follows it in this case it's named as:
子文件夹”。同样,子文件夹之后可能有/或查询字符串。
领域 | 匹配 |
---|---|
测试网 | 匹配 |
https://test.com | 匹配 |
https://test.com?foo=bar | 匹配 |
https://test.com/ | 匹配 |
https://test.com/?foo=bar | 匹配 |
https://www.test.com | 匹配 |
https://www.test.com/subfolder | 匹配 |
https://www.test.com/subfolder/ | 匹配 |
https://www.test.com/subfolder/?foo=bar | 匹配 |
test.com/子文件夹 | 匹配 |
https://www.test.com/foo | 不匹配 |
test.com/foo | 不匹配 |
https://www.test.com/jason | 不匹配 |
https://www.test.com/jason?foo=bar | 不匹配 |
现在我有以下正则表达式:
^(?:\S+://)?[^/]+/?$
但问题是它匹配任何域,这不是我需要的。我想匹配一个特定的域和一个特定的子文件夹。
这怎么可能?
解决方案
你可以使用这个正则表达式:
^(?:https?://)?(?:www\.)?test\.com(?:/subfolder)?/?(?:\?\S*)?$
正则表达式演示:
^
: 开始(?:https?://)?: *optionally* match
http://or
https://`(?:www\.)?
:可选匹配www.
test\.com
: 匹配test.com
(?:/subfolder)?
:可选匹配/subfolder
/?
:可选匹配尾随/
(?:\?\S*)?
:可选匹配以开头的查询字符串?
$
: 结尾
推荐阅读
- python - 如果我在 macOS 上通过 launchctl 启动守护程序,Pynput 将无法工作
- flutter - Boxshadow 出现在其他小部件的后面
- python - 使用python使用tcp套接字从文件中读取和删除瞬时数据
- sql - WHERE 语句选择记录前一天,但当当天是星期一时选择星期五记录 Microsoft SQL
- c - 使用 AVX 内在函数对 __m512i 中的 8 位整数求和
- magento2 - 根据 Magento 2 中客户输入的产品详细信息页面字段,使用我的自定义价格将产品添加到购物车
- angular - 订阅完成后,如何从 Angular 中的 promise/observable 设置变量?
- ios - 删除聊天 - XMPP 框架 - Objective-C
- php - 如何从 USB 驱动器(笔式驱动器)加载文件并在 php 应用程序中显示
- sql - 如何创建此数据透视 SQL 查询?