我需要从一个由分号分隔的网址中提取一个数字列表
网址格式为channelId=4;5;66&fromdate=04-Aug-2015&todate=08-Aug-2015
列表的长度可以是任意数量(以网址的最大长度为准)
到目前为止,我已经得到了这个((;\d{1})|(;\d{2})|(\d{1};)|(\d{2};))
,但这与'channelId'参数中的最后一个数字不匹配
答案 0 :(得分:2)
答案 1 :(得分:1)
在.NET中,您可以利用HttpUtility.ParseQueryString
顶部解析查询字符串。
ParseQueryString
方法使用UTF8格式来解析查询字符串在返回的NameValueCollection
中,URL编码的字符被解码,并且多次出现的相同查询字符串参数被列为单个条目,其中包含用逗号分隔每个值。
使用MSDN的示例:
NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);
// Iterate through the collection.
StringBuilder sb = new StringBuilder("<br />");
foreach (String s in qscoll.AllKeys)
{
sb.Append(s + " - " + qscoll[s] + "<br />");
}
请注意,您需要引用System.Web
(在System.Web.dll中),并为using System.Collections
添加NameValueCollection
。
以下是获取channelId
的示例:
var querystring = "channelId=4;5;66&fromdate=04-Aug-2015&todate=08-Aug-2015";
var qscoll = System.Web.HttpUtility.ParseQueryString(querystring);
var channelId = qscoll["channelId"];
答案 2 :(得分:0)
或者,您可以搜索整个数字序列,然后在每个分号上拆分结果:
a = 'channelId=4;5;66&fromdate=04-Aug-2015&todate=08-Aug-2015';
m = /channelId=(\d+(;\d+)*)/.exec(a)[1].split(';');
alert(m);