regex - 仅当它包含某些查询参数 regex 时才匹配 url
问题描述
嗨,我正在寻找一个匹配 url 的正则表达式,如果它包含
a=anything
b=anything
c=anything
example.com?a=anything
=> 匹配
example.com?a=anything&b=anything
=> 匹配
example.com?b=any&c=any
=> 匹配
example.com?a=anything&d=anything
=> 不匹配,因为d
(未知)被包括在内
example.com?e=anything
=> 不匹配,因为e
(未知)被包括在内
所以 url 应该只包含任何排列a
b
并且c
当它包含任何其他查询参数时忽略 url
直到现在我才想到这个/\?(a|b|c)=[0-9]*&?/g
解决方案
您可以在 PCRE 中使用此正则表达式来匹配此类 URL:
^[^\s?]+\?([abc]=[^&\n]*)(?:&(?1))*$
正则表达式详细信息:
^
: 开始[^\s?]+
: 匹配 1+ 任何不是空格且不是?
\?
: 匹配一个?
开始查询字符串([abc]=[^&\n]*)
: 匹配名称为a
orb
或的查询参数c
。在第 1 组中捕获此内容(?:&(?1))*
: 通过递归捕获组 #1 匹配 0 个或多个此类查询参数$
: 结尾
PS:这绝不是匹配 URL 的通用正则表达式。
推荐阅读
- php - 单击按钮后如何使用 php 更新 mysql 表中的 x 和 y 列值?
- java - Aerospike 料仓长度小于 14
- javascript - 来自字符串的敲除模板必须创建自定义绑定?
- java - 如何在使用 SpringBoot mocikto 和 junit4 进行测试时检查哪个用户正在调用 API
- command-line - 如何在 SuperCollider 的命令行 REPL 中进行多行输入?
- python - 用于动态输入形状的 Tensorflow C++ API
- android - 输出:错误:找不到资源样式/TextAppearance.Compat.Notification.Info (aka package_name:style/TextAppearance.Compat.Notification.Info)
- azure - 将 .net Core 应用发布到 Azure Docker(容器注册表)
- php - 在 Woocommerce 中提交结帐表单时格式化帐单电话号码
- macos - 修复 MacOS 上损坏的 XAMPP 安装