0

我有以下链接:

sitename.com/Default.aspx?PageID=13078494

我想获取以下内容:“PageID=13078494”。这是我到目前为止所拥有的:

var url = "sitename.com/Default.aspx?PageID=13078494";    
urlmatch = url.match([PageID=13078494]);
urlmatch[0];

这是我想要做的正确表达吗?

4

5 回答 5

2
var myregexp = /[?&]PageID=(\d+)/i;
var match = myregexp.exec(url);
if (match != null) {
    //This is if your match it successful
    result = match[1];
} else {
    //This is if url doesn't match
    result = "";
}

无论 PageID 在哪里,这个都可以工作。它会匹配

  • sitename.com/Default.aspx?PageID=13078494
  • 任何东西.org/Default.aspx?PageID=13078494
  • sitename.com/Default.aspx?foo=bar&PageID=13078494
  • sitename.com/Default.html?foo=bar&PageID=13078494&bar=foo
  • Default.html?foo=bar&PageID=13078494&bar=foo

重要的是,它不匹配

  • sitename.com/Default.aspx?NotThePageID=13078494

或者没有检查,简单地说 url.match(/[?&]PageID=(\d+)/i)[1],但我建议不要这样做,除非你确定它总是匹配的。

于 2012-11-12T02:46:54.603 回答
2

您的正则表达式及其语法是错误的。

更好的方法是根本不使用正则表达式。改用.split()

var urlmatch = url.split('?')[1];

这是小提琴:http: //jsfiddle.net/qpXNU/

于 2012-11-12T02:38:05.917 回答
1

尝试以下正则表达式,它将提取 PageID 并将其放在第一个匹配组中:

var url = "sitename.com/Default.aspx?PageID=13078494";
urlmatch = url.match(/PageID=(\d+)/);
alert(urlmatch[1]);​ // 13078494
于 2012-11-12T02:40:36.150 回答
0

在处理 URL 时,浏览器非常好。

您应该将字符串转换为实际的 URL,如下所示:

var toURL = function (href) {
    var a = document.createElement('a');
    a.href = href;
    return a;
};

现在使用浏览器的内置解析功能

var url = toURL('sitename.com/Default.aspx?PageID=13078494');
alert(url.search);
于 2012-11-12T04:04:11.817 回答
0

如果您匹配特定的值,那很好,否则使用下面来匹配 pageID 中的任意位数:

      /PageID=\d+/

作为:

    var url = "sitename.com/Default.aspx?PageID=13078494";
    var urlmatch = url.match(/PageID=\d+/);
    alert(urlmatch[0]);

或者要匹配 pageID 中的 8 个精确数字,请使用:

      /PageID=\d{8}/ 

作为:

    var url = "sitename.com/Default.aspx?PageID=13078494";
    var urlmatch = url.match(/PageID=\d{8}/);
    alert(urlmatch[0]);
于 2012-11-12T02:38:56.317 回答