You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WireMock的bodyPatterns中用正则匹配1-12的exp_month?

WireMock中匹配1-12月份的正则修正方案

你的问题出在正则表达式的逻辑分组上,原配置里card\\[exp_month\\]=[1-9]|1[0-2]的写法错误——正则中|(或操作)的优先级极低,会把整个匹配字符串拆成两个独立分支:

  • 分支1:仅匹配到card[exp_month]=[1-9],忽略后面的&card[exp_year]=...部分,无法匹配完整请求体
  • 分支2:仅匹配1[0-2]&card[exp_year]=2[0-9][2-9][3-9],忽略前面的请求体前缀,同样不匹配

正确的做法是把1-12的匹配规则用**非捕获括号(?:...)**包裹,确保|只作用于月份数字的匹配逻辑,修正后的正则片段为:

card\\[exp_month\\]=(?:[1-9]|1[0-2])

完整的WireMock请求配置如下:

"request": {
    "url": "/stripe/v1/payment_methods",
    "method": "POST",
    "bodyPatterns": [
        {
            "matches": "type=card&card\\[cvc\\]=[0-9]{3}&card\\[number\\]=[1-9][0-9]{15}&card\\[exp_month\\]=(?:[1-9]|1[0-2])&card\\[exp_year\\]=2[0-9][2-9][3-9]",
            "caseInsensitive": false
        }
    ]
}

该正则可正确匹配:

  • 1-9的单月份数字(如1、9)
  • 10-12的双月份数字(如10、12)

内容的提问来源于stack exchange,提问作者tuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:55:12