我需要使用Regex和Javascript匹配url路径的某个部分

时间:2012-11-12 02:36:28

标签: javascript regex expression

我有以下链接:

sitename.com/Default.aspx?PageID=13078494

我想抓住以下内容:" PageID = 13078494"。这就是我到目前为止所做的:

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

这是我试图做的正确表达吗?

5 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分: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
  • anything.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中富=栏&安培; PAGEID = 13078494&安培;巴= FOO

重要的是,它不匹配

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

或者没有检查,只是 url.match(/[?&]PageID=(\d+)/i)[1],但我建议反对,除非你确定它总是匹配。

答案 2 :(得分:1)

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

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

答案 3 :(得分: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]);

答案 4 :(得分:0)

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

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

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

现在使用浏览器的built-in parsing capabilities

var url = toURL('sitename.com/Default.aspx?PageID=13078494');
alert(url.search);