【问题标题】:Regex pattern for Url in FiddlerFiddler 中 Url 的正则表达式模式
【发布时间】:2015-03-29 19:30:10
【问题描述】:

我必须通过添加规则使用提琴手中的自动响应器来发送不同的响应,具体取决于 http 请求中的属性值。

我的网址将如下所示

  1. http://example.com/path/page?type=b&edate=&dep=LGW('dep' 的值可以是列表中的任何内容,例如 [LGW,ABZ,EDI,GLA,BFS,BHX,BOH,BRS,CWL,DSA])

  2. http://example.com/path/page?type=b&edate=22-04-2015&dep=LGW

  3. http://example.com/path/page?type=b&edate=&dep=PMI(对于“dep”的请求 3 和 4 值可以是上述列表中提到的任何其他值)

  4. http://example.com/path/page?type=b&edate=22-04-2015&dep=PMI

在请求 1 和 3 中,“edate”将为空,而在请求 2 和 4 中,“edate”的值为。

我可以将 req 2 的正则表达式写为

example.com?.+&edate=(\d*)-(\d*)-(\d*)&stay=0&dep=(LGW|ABZ|EDI|GLA|BFS|BHX|BOH|BRS|CWL|DSA)&.+

如何为请求 3 编写正则表达式?我试过这个:

example.com?.+&edate=(\d*)-(\d*)-(\d*)&stay=0&dep=!(LGW|ABZ|EDI|GLA|BFS|BHX|BOH|BRS|CWL|DSA)&.+

但它仅验证第一项,即。 LGW 未验证剩余部分。

如果我错了,请纠正我

【问题讨论】:

    标签: regex fiddler jsfiddle regex-negation


    【解决方案1】:

    您使用了几次.+,我不鼓励您这样做,因为它很贪心,而且匹配的次数比您想象的要多。

    至于您的问题,匹配某个列表中的 3 个字符将是这样完成的:

    (?!LGW|ABZ|EDI|GLA|BFS|BHX|BOH|BRS|CWL|DSA).{3}
    

    Debuggex Demo

    在您原来的正则表达式的基础上,我会在下面做一些类似的事情。但是我不得不更改一些东西,例如 &stay=0 部分,直到 url 中的 ? 和末尾的 &.+ 部分:

    example.com[^?]*\?.+?&edate=(\d*)-(\d*)-(\d*).*?&dep=((?!LGW|ABZ|EDI|GLA|BFS|BHX|BOH|BRS|CWL|DSA).{3})(?:&.+)?
    

    Debuggex Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-12
      • 1970-01-01
      相关资源
      最近更新 更多