用于忽略查询参数的URL匹配的正则表达式

时间:2015-06-29 20:32:01

标签: regex

我正在尝试提供与以下网址匹配的正则表达式:

http://test.com/bobs/your/uncle/1
http://test.com/bobs/your/uncle/5
http://test.com/bobs/your/uncle/5?tab=1

但与以下网址不符:

http://test.com/bobs/your/uncle/1/brah/5
http://test.com/bobs/your/uncle/1/brah/5?tab=2

我尝试了以下正则表达式

/bobs/your/uncle/\d+\??

适用于上面的前三个网址,但不适用于最后两个网址。

2 个答案:

答案 0 :(得分:2)

您需要使用开始和结束锚点:

$(function () { $(".branding").click(function () {
    $.ajax({
          url: 'branding.html',
          data: { id: $(this).attr('id') },
          cache: false,
          success: function (data) {
              $(".container").replaceWith(data);  //try with double qoutes
          }
    });
});

请参阅演示https://regex101.com/r/pP2fL1/1

您可以使用'bobs/your/uncle/\d+\??[^/]*$' 来匹配除[^/]*之外的任何其他符合tab=1的额外字符串。

答案 1 :(得分:1)

您可以使用此正则表达式:

/bobs/your/uncle/\d+(?:\?|$)
在您想要的输入URI之后,

(?:\?|$)将匹配?或输入结束。