带有查询字符串的URL的正则表达式

时间:2015-07-12 11:26:38

标签: regex

我试图在fiddler中创建一个正则表达式作为规则使用。我不太擅长正则表达式。

这个正则表达式:

http://myServer:28020/MyService/ItemWebService.json?([a-zA-Z]+)

匹配以下网址:

http://myServer:28020/MyService/ItemWebService.json?action=keywordSearch&username=StockOnHandPortlet&sessionId=2H7Rr9kCWPgIZfrxQiDHKp0&keywords=blue&itemStatus=A

到目前为止一切顺利。但是为什么当我尝试这个正则表达式时:

http://myServer:28020/MyService/ItemWebService.json?action=keywordSearch([a-zA-Z]+)

与上述网址不符。为什么会这样?

2 个答案:

答案 0 :(得分:5)

在正则表达式中,您需要在字符类之外转义.?

所以,这足以匹配URL本身:

http://myServer:28020/MyService/ItemWebService\.json

带有查询字符串的URL可以与

匹配
http://myServer:28020/MyService/ItemWebService\.json\??(?:&?[^=&]*=[^=&]*)*

请参阅demo

<强>解释

  • http://myServer:28020/MyService/ItemWebService\.json - 匹配我们需要转义的基本网址.以便按字面匹配
  • \?? - 匹配0或1(由于?量词)文字?
  • (?:&?[^=&]*=[^=&]*)* - 匹配*的0个或更多(由于&?[^=&]*=[^=&]*)序列:
    • &? - 0或1 &(无需转义)
    • [^=&]* - 除=&
    • 以外的0个或多个字符
    • = - n等于符号
    • [^=&]* - 除=&
    • 以外的0个或多个字符

如果要匹配第一个查询参数=值设置为action=keywordSearch的网址,可以使用following regex

http://myServer:28020/MyService/ItemWebService\.json\?action=keywordSearch(?:&?[^=&]*=[^=&]*)*

答案 1 :(得分:0)

使用

(\?|\&)([^=]+)\=([^&]+)

使用g选项(全局)

http://myServer:28020/MyService/ItemWebService.json(\?|\&)([^=]+)\=([^&]+)