解析url参数正则:(?<=\?|&)[\w\={}\\\\,-:'\s'""]*(?=[^#\s]|)

意思是(?<=\?|&) 从?或&符号开始匹配之后的满足 [\w\={}\\\\,-:'\s'""]*的字符串 但是不包含& 1个到多个   (?=[^#\s]|)匹配空格|#号之前或者空格之前结束

正好项目中要用到 捣鼓了好久还是不会.最终放弃使用split分割的方式解析发现好落伍

  public static NameValueCollection QueryString(string path)
{
if (string.IsNullOrEmpty(path))
{
return null;
}
var arr=path.Split(new char[] { '?' }, StringSplitOptions.RemoveEmptyEntries);
if (arr.Length != )
{
return null;
}
var values = arr[];
arr = values.Split(new char[] { '&' }, StringSplitOptions.RemoveEmptyEntries);
if (arr == null) return null;
string[] itemvalues;
NameValueCollection nvcs = new NameValueCollection();
foreach (var item in arr)
{
itemvalues = item.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
if (itemvalues == null || itemvalues.Length == ) continue;
nvcs.Add(itemvalues[], itemvalues.Length <= ? string.Empty : itemvalues[]);
}
return nvcs;
}

然后去看正则的文档 修改后版本

      public static NameValueCollection QueryString(string path)
{
if (string.IsNullOrEmpty(path))
{
return null;
}
path = System.Web.HttpUtility.UrlDecode(path);
var m = Regex.Matches(path, @"(?<=\?|&)[\w\={}\\\\,-:'\s'""]*(?=[^#\s]|)", RegexOptions.None);
if (m.Count <= )
{
return null;
}
NameValueCollection nvcs = new NameValueCollection();
string[] itemvalues = null;
for (int i = ; i < m.Count; i++)
{
itemvalues = m[i].Value.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);
if (itemvalues == null || itemvalues.Length == ) continue;
nvcs.Add(itemvalues[], itemvalues.Length <= ? string.Empty : itemvalues[]);
}
return nvcs;
}

其实微软有封装好的方法 System.Web.HttpUtility.ParseQueryString  传入?号后面一部分就好了  有种有现成的不用 造轮子的感觉。 但是无所谓啦 当练习正则 还有自己的代码也好把控一点

推荐一篇不错的讲正则的文章http://www.oschina.net/question/12_9507

正则表达式解析url参数的更多相关文章

  1. IOS开发---菜鸟学习之路--(二十一)-利用正则表达式解析URL获取其中的参数

    因为项目需要解析URL当中参数的部分,在网上搜索了一下都没有相关的资料. 然后就自己写了一个 其实我就是通过正则表达式来处理URL 进行解析的 好了直接上代码吧 也是非常的简单,大家拷贝过去就可以使用 ...

  2. jQuery 解析 url 参数

    应用场景: 三毛:我现在拿到一个 url 地址(https://www.google.com/search?dcr=&ei=5C&q=param),我现在要获取 location.se ...

  3. JS解析URL参数为对象

    曲不离口,拳不离手 JS小编程练习之一:解析URL参数为对象 url:http://www.baidu.com/we/index.html?id=098&aaa=123&ccc=456 ...

  4. 正则表达式解析URL

    正则表达式: var match = /^((ht|f)tps?:)\/\/([\w-]+(\.[\w-]+)*\/){1}(([\w-]+(\.[\w-]+)*\/?)*)?(\?([\w\-\., ...

  5. 解析URL参数

    1.拿到一个完整url后,如何解析该url得到里面的参数. /** * 解析url中参数信息,返回参数数组 */ function convertUrlQuery($query) { $queryPa ...

  6. js解析url参数

    1.采用正则,这也是现在使用最为方便的 function getQueryString(name) { const reg = new RegExp("(^|&)" + n ...

  7. 正则表达式获取URL参数

    使用到的正则表达式: [^\?&]?参数名=[^&]+ document.location.getURLPara = function (name) { var reg = new R ...

  8. 一个解析url参数方法

    function getRequestParameter(a) { var b = document.location.search || document.location.hash; if (a ...

  9. js解析url参数如http://www.taobao.com/index.php?key0=21&key1=你哈&(获取key0和key1的值)

    function parseQueryString(url) { var pos; var obj = {}; if ((pos = url.indexOf("?")) != -1 ...

随机推荐

  1. CRLF line terminators导致shell脚本报错:command not found

    Linux和Windows文本文件的行结束标志不同.在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行.有时候在Wind ...

  2. SQL Server 2008 R2 Service Pack 3 已经发布

    微软SQL Server Product Team在9月26号官方博客宣布,Microsoft SQL Server 2008 R2 Service Pack 3 (SP3)正式发布了 .具体信息可以 ...

  3. hive 内部表和外部表的区别和理解

    1. 内部表 create table test (name string , age string) location '/input/table_data'; 注:hive默认创建的是内部表 此时 ...

  4. Oracle触发器原理、创建、修改、删除

    本篇主要内容如下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2. ...

  5. 搭建通过 ssh 访问的 Git 服务器

    一.Git 协议 Git 可以使用四种主要的协议来传输数据:本地传输,ssh 协议,Git 协议和 HTTP 协议. Git 使用的传输协议中最常见的就是 ssh 了.大多数环境已经支持通过 ssh ...

  6. Python进阶【第一篇】socket

    1.socket模块 要使用socket.socket()函数来创建套接字.其语法如下: socket.socket(socket_family,socket_type,protocol=0) soc ...

  7. js 输出数组最大值

    ,,,,]; ]; ; i < run.length; i++) { if (max<run[i]) { max=run[i]; }else{ max=max; } } alert(max ...

  8. java自带工具-javap使用

    javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码.通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作,有助与我们更加理解java特性. javap(反汇编命令) ...

  9. phpqrcode 生成二维码

    这个项目需要根据信息来自动生成二维码,到网上搜了下,发现php有生成二维码的类库phpqrcode,所以打算就用这个来生成二维码 从官网下载类库源码http://sourceforge.net/pro ...

  10. 并查集补集作法 codevs 1069 关押罪犯

    1069 关押罪犯 2010年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description ...