解析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. 常用API——字符串String型函数

    上图: 声明 var myString = new String(“Every good boy does fine.”); var myString = “Every good boy does f ...

  2. MongoDB-分片片键

    1.分片 分片是什么?分片就是将数据存储在多个机器上.当数据集超过单台服务器的容量,服务器的内存,磁盘IO都会有问题,即超过单台服务器的性能瓶颈.此时有两种解决方案,垂直扩展和水平扩展(分片).    ...

  3. cms真实问题的来源以及模拟解决方案

    先来描述一下cms问题的来源: 初始需求: 在开发的过程中有这样的一个处理时间显示的需求: 如果时间小于1分钟显示秒, 如果时间小于1小时显示分钟, 如果时间小于1天显示小时, 如果大于1天显示日期. ...

  4. SQL SERVER 2008 Reporting Services 的一些小问题集合

    实验环境:服务器  Windows Server  2008 R2 Standard 64bit                   数据库  SQL SERVER 2008 R2 Standard ...

  5. sql server 里面的 dynamic Data Masking

    有时候啊,当我们存放在数据库里面的数据,需要明文存放,但是对于前台查询出来的,又不太希望明文放出去的时候(比方说客户的手机啊,邮箱啊)之类有点敏感的信息,之前通常是保存个明文,然后在前台展现的时候再特 ...

  6. 几款比较好用的C语言的集成开发环境及在windows下用命令行编译C代码

    最近要用到C,所以尝试了这几款windows平台下比较好的IDE. VS2015:比较复杂和庞大,据说从2013版本开始支持C99标准. C-free:轻巧,但是不支持C99. vc++6.0:很多学 ...

  7. shell生成指定范围内的随机数

    #!/bin/bash read -p "请输入起始数:" min read -p "请输入终止数:" max if [ $min -gt $max ] the ...

  8. LLVM 笔记(二)—— PHI node

    ilocker:关注 Android 安全(新手) QQ: 2597294287 什么是 PHI node? 所有 LLVM 指令都使用 SSA (Static Single Assignment,静 ...

  9. linux mint17.2 安装fcitx输入法

    mint17刚出的时候,曾经在虚拟机上体验过. 现在决定好好学习linux,再加上实在是太萌mint,就在虚拟机上安装了mint17.2 开始配置fcitx输入法: 添加ppa: sudo add-a ...

  10. WPF系列 Path表示语法详解(Path之Data属性语法)

    示例: XAML(代码A): <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...