2014-09-02 60 views
0

我需要提取cookie值并将其用作出站重写规则作为反向引用。如果Set-Cookie头不包含这个cookie,则回引用应该是空的。正则表达式cookie值

所以我创造了条件,并坚持创建适当的正则表达式。 正则表达式应该匹配每个输入。针对Cookie回到基准值的字符串

  • somecookie=somevalue;locale=en-US;expires=-1
  • locale=en-US
  • somecookie=somevalue;locale=en-US
  • locale=en-US;expires=-1

命名为locale应该是en-US。对于字符串

  • somecookie=somevalue;local=en-US;expires=-1
  • ;expires=-1
  • '' 回参考值应该是``。

这样的正则表达式的任何想法?

+0

您在使用哪种工具/语言?你能显示你尝试的代码吗? – anubhava 2014-09-02 08:12:35

+0

它是IIS中的应用程序请求路由。没有代码,只是web应用程序配置 – 2014-09-02 08:39:07

回答

0
(?=.*?locale)locale=(.*?);.*$|(?!.*?locale).*=().*$ 

您可以使用它。

See demo

+0

我添加了一些测试输入。在实际输入中没有'somecookie',我用它举例 – 2014-09-02 08:40:56

+0

@Kidoftheneon现在尝试 – vks 2014-09-02 08:47:39

+0

你变体不通过第二和第三个测试输入。我已经修改它,它工作'(?=。*?locale)locale =([^;] *)。* $ |(?!。*?locale)。* =()。* $'。谢谢! – 2014-09-02 08:58:17

0

此正则表达式匹配任选的区域设置值:

.*locale=([^;\s]+).*|.+ 

背面参考组1

See live demo与实施例正确地匹配。

这是通过使用交替与区域比赛任何一场比赛,知道交替匹配左到右,即左侧首先尝试,如果失败,只匹配,则是正确的一边试图。

+0

第二个输入不匹配,但每个输入都应该。 ARR显示错误,表明表达式语法不正确。在我看来,ARR不支持倒序 – 2014-09-02 08:17:43

+0

是否总会有“本地”,或者是整个语言环境值是可选的想法? – Bohemian 2014-09-02 11:02:53

+0

'locale = ...'部分是可选的 – 2014-09-02 11:16:21