在具有多个参数随机值的 URL 上进行正则表达式 PCRE 匹配

Regex PCRE matching on an URL with multiple parameters random values

我想用正则表达式 PCRE 匹配的示例 GET 请求:

random.php?blue=value1&green=value2&red=value3&orange=value4&grey=value5&black=value6

事实:

random.php - 文件名是随机的,只有“.php?”已修复

我有大约 10 种颜色定义为参数

颜色没有特定顺序 - .php?blue=[a-zA-Z0-9]{1,20}

参数可以只有2个颜色,也可以全部10个,但是我想匹配所有GET请求,多个参数用\&

连接

值始终介于 1-20 之间,并带有字母数字 - .php?blue=[a-zA-Z0-9]{1,20}

你会如何处理这个问题?

可能是这样的:

[^\s/?]+\.php\?((?:blue|orange|red|black)=[a-zA-Z0-9]{1,20})(?:&(?1)){1,9}(?:$|#.*)

(配上你想要的颜色)

(?1) 是对第一个捕获组子模式的引用。

我添加了对最终锚点部分的支持 #.*。如果您不需要或不想要它,请随时将其删除。