[英]Parsing an URL in JavaScript
I need to parse url in JavaScript. 我需要在JavaScript中解析url。
Here is my code: 这是我的代码:
var myRe = /\?*([^=]*)=([^&]*)/;
var myArray = myRe.exec("?page=3&Name=Alex");
for(var i=1;i<myArray.length;i++)
{
alert(myArray[i]);
}
Unfortunately it only works for first name=value
pair. 不幸的是,它仅适用于name=value
对。
How I can correct my code? 我如何纠正我的代码?
exec
returns a match, or null if no match found. exec
返回匹配项,如果未找到匹配项,则返回null。 So you need to keep exec
ing until it returns null. 所以你需要保持exec
直到它返回null。
var myRe = /\?*([^=]*)=([^&]*)/;
var myArray;
while((myArray = myRe.exec("?page=3&Name=Alex")) !== null)
{
for(var i=1;i<myArray.length;i++)
{
alert(myArray[i]);
}
}
Also, you're regex is wrong, it definately needs th g
switch, but I got it working using this regex: 此外,你的正则表达式是错误的,它肯定需要个g
开关,但我得到了它的工作使用此正则表达式:
var regex = /([^=&?]+)=([^&]+)/g;
See Live example: http://jsfiddle.net/GyXHA/ 查看实例: http : //jsfiddle.net/GyXHA/
If all you're trying to do is get query string name/value pairs you could do something like this: 如果您要做的就是获取查询字符串名称/值对,您可以执行以下操作:
function getQueryStringValue(varName) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == varName) { return pair[1]; }
}
}
var qs="da?page=3&page=4&Name=&xxx=43&page=&#adasdsadsa";
var params=qs.replace(/^.*\??/g,'').replace(/#.*/g,'').match(/[^&\?]+/g);
var args={};
if(params)for(var i=0;i<params.length;i++) {
var propval=params[i].split('=');
if(!args.hasOwnProperty(propval[0]))args[propval[0]]=[];
args[propval[0]].push(propval[1]);
}
// result:
// args=== {
// Name: [""],
// page: ["3","4",""],
// xxx: ["43"]
// }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.