获取url参数函数解析

获取方法

getUrlRequest: function (name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"), // 构造一个含有目标参数的正则表达式对象
        r = decodeURIComponent(window.location.search).substr(1).match(reg); // 匹配目标参数
    // 返回参数值
    if (r != null) {
        return decodeURIComponent(r[2]);
        // return unescape(r[2]);
    }
    return null;
}

字符串编码

  1. escape()
  • 已经废弃的编码函数 不建议再使用
    escape() 函数是全局对象的属性. 特色字符如: @*_+-./ 被排除在外.使用 unescape() 函数解码。

2.encodeURI(URI)

  • 一般用于编码整个URI 使用decodeURI()解码 需要注意下面的字符不会被编码|
    类型 | 包含
    —|—
    保留字符 | ; , / ? : @ & = + $
    非转义的字符 | 字母 数字 - _ . ! ~ * ' ( )
    数字符号|#
  • 注意 如果URL需要遵循较新的RFC3986标准,那么方括号是被保留的(给IPv6),因此对于那些没有被编码的URL部分(例如主机),可以使用下面的代码

    function fixedEncodeURI (str) {
         return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
     }
    
  1. encodeURIComponent()
  • 用于编码URI组成部分 使用 decodeURIComponent() 解码
    decodeURIComponent() 转义除了 字母 数字 ( ) . ! ~ * ' - _ 之外的所有字符

  • 对于 application/x-www-form-urlencoded (POST) 这种数据方式,空格需要被替换成 ‘+’,所以通常使用 encodeURIComponent 的时候还会把 “%20” 替换为 “+”
    为了更严格的遵循 RFC 3986(它保留 !, ‘, (, ), 和 *),即使这些字符并没有正式划定 URI 的用途,下面这种方式是比较安全的:

    function fixedEncodeURIComponent (str) {
        return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {
             return '%' + c.charCodeAt(0).toString(16);
        });
    }
    

正则分组

1.(^|&)" + name + "=([^&]*)(&|$)")
* 匹配 name=xx &name=xx &name=xx&
* [^abc] 取非 即不是abc的任意字符

match方法

  • 检索字符串 strObject 以找到一个或多个与正则匹配的文本
  • 如果正则没有gmatch() 方法只能执行一次匹配,如果没有找到任何匹配项返回 null
  • 如果匹配到了 则返回一个数组,数组第0个元素是匹配到的文本。其余的元素存放的是与正则表达式的子表达式配匹配的文本。即第1个元素是 (^|&) 第2个元素是 ([^&]*) 第三个元素是 (&|$)
  • 除了上面的元素还包含一个 index 项标识匹配文本的起始字符在 stringObject 的中的下标。 input 就是 stringObject
  • 以上是没有g的规则 当正则有gmatch()返回的是匹配的文本 不会返回正则子表达式的内容 且没有index input 元素。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值