仅在包含某些查询参数正则表达式时才匹配 url
Match url only if it contains certain query parameters regex
您好,我正在寻找匹配 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
或b
或c
的查询参数。在组 #1 中捕获它
(?:&(?1))*
: 通过递归捕获组#1 匹配0个或多个这样的查询参数
$
:结束
PS:这绝不是匹配 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
或b
或c
的查询参数。在组 #1 中捕获它
(?:&(?1))*
: 通过递归捕获组#1 匹配0个或多个这样的查询参数
$
:结束
PS:这绝不是匹配 URL 的通用正则表达式。