🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 说明 这里将用自带的规则进行规则配置的讲解 ## 常见的二阶匹配 先看一个配置例子,这里先不管 `uri` 和 `hostname` 这个key,只关注匹配规则的写法。 `[参数1,参数2,参数3]` ![](https://img.kancloud.cn/1e/9c/1e9c42f5a2cf2fd089a2cb037c22bb8b_748x532.png) 解释: * 参数1:匹配的内容【类型可以是字符串、数组、字典、正则字符串... 具体是有第二个参数来决定】 * 参数2:匹配符【标记使用哪种方式进行匹配(字符串等于、包含、正则匹配、数组、字典...)】 具体有哪些匹配方式,参考[匹配方式说明](https://www.kancloud.cn/openstar/install/1136678),一定要仔细阅读,在来配置自己想要的规则,可以优化好自己的规则,提高其匹配的性能(**能不用正则就不用正则**) * 参数3:取反标记【可以没有,默认是false】 当我们的匹配符用了`等于`这个匹配方式时,取反标记为`true`,那么规则匹配就取它的反,匹配符则会解读为`不等于`,这个使用有点不好理解,但是多调试多测试几次就知道具体是什么回事 ## table类型的三阶匹配 先看一个配置例子,匹配规则的写法:`[参数1,参数2,[子参数1,子参数2],参数4]` ![](https://img.kancloud.cn/9d/6e/9d6e506a14c671b8b248248fe134fda1_748x477.png) 我们在来看一下比较特殊的 header 的内容 ![](https://img.kancloud.cn/48/1b/481b54515565e7ec8a4bafda36d4171c_1098x372.png) 这里大家可以看到,`accept-language`有2个值,我们在写规则匹配的时候,取哪一个值呢? 解释: * 参数1:匹配的内容【类型可以是字符串、数组、字典、正则字符串... 具体是有第二个参数来决定】 * 参数2:匹配符【标记使用哪种方式进行匹配(字符串等于、包含、正则匹配、数组、字典...)】 具体有哪些匹配方式,参考[匹配方式说明](https://www.kancloud.cn/openstar/install/1136678),一定要仔细阅读,在来配置自己想要的规则,可以优化好自己的规则,提高其匹配的性能(**能不用正则就不用正则**) * 参数3:[子参数1,子参数2] * 子参数1:需要匹配的`key`名称;如上面这个特别的 `accept-language` * 子参数2:匹配的值是数组时,取第几个位置,默认是取最后一个 any --- 表示取任意一个(会匹配多次) ;end --- 匹配最后一个 ;%n% --- 匹配指定序号的值,没有则取最后一个 * 参数4(最后一个参数):取反标记【可以没有,默认是false】 当我们的匹配符用了`等于`这个匹配方式时,取反标记为`true`,那么规则匹配就取它的反,匹配符则会解读为`不等于`,这个使用有点不好理解,但是多调试多测试几次就知道具体是什么回事 **可以看到,这里的规则匹配是我们常用的二阶匹配的一个扩展** ## from类型的table的三阶匹配 先看一个配置例子,匹配规则的写法:`[参数1,参数2,[子参数1,子参数2],参数4]` ![](https://img.kancloud.cn/53/cc/53ccad6d6cf6bd854ce6cff5fcbbfffa_752x547.png) 我们在来看一下比较特殊的 post_form 的内容(解析后),参考[匹配位置说明](https://www.kancloud.cn/openstar/install/1136679) ![](https://img.kancloud.cn/a7/7f/a77f0b6c8c97d124015d2cd6e1116b54_522x175.png) 解释: * 参数1:匹配的内容【类型可以是字符串、数组、字典、正则字符串... 具体是有第二个参数来决定】 * 参数2:匹配符【标记使用哪种方式进行匹配(字符串等于、包含、正则匹配、数组、字典...)】 具体有哪些匹配方式,参考[匹配方式说明](https://www.kancloud.cn/openstar/install/1136678),一定要仔细阅读,在来配置自己想要的规则,可以优化好自己的规则,提高其匹配的性能(**能不用正则就不用正则**) * 参数3:[子参数1,子参数2] * 子参数1:需要匹配的`form-id`名称(完全等于匹配);【暂不支持 form-id 的模糊/正则匹配】 * 子参数2:需要匹配的位置,通过图片中标记的位置,大概理解了这个参数代表的意思(所以取值范围固定 1-4) `1 --- form-id 名称;2 --- 文件名称;3 --- 文件类型;4 --- 文件内容` * 参数4(最后一个参数):取反标记【可以没有,默认是false】 当我们的匹配符用了`等于`这个匹配方式时,取反标记为`true`,那么规则匹配就取它的反,匹配符则会解读为`不等于`,这个使用有点不好理解,但是多调试多测试几次就知道具体是什么回事 ## 重要的事情 一定要多练习、测试,一定要多练习、测试,一定要多练习、测试,才可以理解这个规则的匹配 **因为被匹配的内容类型样式多样,还没有想到比较优雅的规则表示的方式,如果您有好的思路,不妨分享一下**