URL与querystring的正则表达式

Regex for URL with querystring

本文关键字:正则表达式 querystring URL      更新时间:2023-09-26

我使用下面的javascript和regex来测试url字符串。

var url = window.location.pathname;
// create regexp to match current url pathname and remove trailing slash if 
// present as it could collide with the link in navigation in case 
// trailing slash wasn't present there
urlRegExp = new RegExp(url == '/' ? window.location.origin + '/?$' : url.replace(/'/$/, '')); 
// now grab every link from the navigation
$('.page-sidebar a').each(function () {
    // and test its normalized href against the url pathname regexp
     if (urlRegExp.test(this.href.replace(/'/$/, ''))) {
         $(this).closest("li").addClass("active");
     }
});

但是这个正则表达式不包括querystring。我该怎么做呢?

也许你可以用这样的东西匹配字符串,并从中构造你想要的东西。

var rx = new RegExp("^(?:([^:''/?#]+):)?(?:''/''/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:''/?#]*)(?::(''d*))?))?((((?:[^?#''/]*''/)*)([^?#]*))(?:''?([^#]*))?(?:#(.*))?)");
var url = "http://stackoverflow.com/questions/16053753/regex-for-url-with-querystring?a0b&c=d&e=f#anchor";
var val = url.match(rx);
val.forEach(function (part) {
    var result = $("#result");
    var $text = $("<p>").text(part);
    result.append($text);
});

您可以在jsfiddle

上使用此代码