我有以下链接:
sitename.com/Default.aspx?PageID=13078494
我想获取以下内容:“PageID=13078494”。这是我到目前为止所拥有的:
var url = "sitename.com/Default.aspx?PageID=13078494";
urlmatch = url.match([PageID=13078494]);
urlmatch[0];
这是我想要做的正确表达吗?
我有以下链接:
sitename.com/Default.aspx?PageID=13078494
我想获取以下内容:“PageID=13078494”。这是我到目前为止所拥有的:
var url = "sitename.com/Default.aspx?PageID=13078494";
urlmatch = url.match([PageID=13078494]);
urlmatch[0];
这是我想要做的正确表达吗?
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 在哪里,这个都可以工作。它会匹配
重要的是,它不匹配
或者没有检查,简单地说
url.match(/[?&]PageID=(\d+)/i)[1]
,但我建议不要这样做,除非你确定它总是匹配的。
您的正则表达式及其语法是错误的。
更好的方法是根本不使用正则表达式。改用.split()
:
var urlmatch = url.split('?')[1];
这是小提琴:http: //jsfiddle.net/qpXNU/
尝试以下正则表达式,它将提取 PageID 并将其放在第一个匹配组中:
var url = "sitename.com/Default.aspx?PageID=13078494";
urlmatch = url.match(/PageID=(\d+)/);
alert(urlmatch[1]); // 13078494
在处理 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);
如果您匹配特定的值,那很好,否则使用下面来匹配 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]);