仅在包含某些查询参数正则表达式时才匹配 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 bc 的任何排列,并在包含任何其他查询参数时忽略 url

直到现在我才想到这个/\?(a|b|c)=[0-9]*&?/g

您可以在 PCRE 中使用此正则表达式来匹配此类 URL:

^[^\s?]+\?([abc]=[^&\n]*)(?:&(?1))*$

RegEx Demo

正则表达式详细信息:

  • ^: 开始
  • [^\s?]+:匹配 1+ 个不是空格且不是 ?
  • 的字符
  • \?:匹配一个?开始查询字符串
  • ([abc]=[^&\n]*):匹配名称为abc的查询参数。在组 #1
  • 中捕获它
  • (?:&(?1))*: 通过递归捕获组#1
  • 匹配0个或多个这样的查询参数
  • $:结束

PS:这绝不是匹配 URL 的通用正则表达式。