function getQueryValue (key) {

const reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i')

const arr = window.location.search.substring(1).match(reg)

if (arr === null) return null

return decodeURIComponent(arr[2])

}

match()方法

match()方法用于在字符串内检索指定的值,该方法类似于indexOf()和lastIndexOf(),但是它返回指定的值,而不是字符串的位置

参数可以是所检索的字符串值,也可以是正则

该方法的返回值是存放匹配结果的数组,该数组的内容取决于正则是否具有全局标识g

说明

match()方法将检索调用该方法的字符串,以找到一个或多个与regexp匹配的文本。

如果regexp没有标识g,那么match()方法就只能执行一次匹配,如果没有找到任何匹配的文本,该方法返回null,否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息,该数组的第0个元素是正则所匹配到的文本,其余的元素存放的是正则表达式的子表达式匹配到的文本。除了这些常规元素之外,返回的数组还含有两个对象属相,index属性声明的是匹配文本的起始字符在string中的位置,input属性声明的是对string的引用。

如果regexp具有全局标识,则match()方法执行全局检索,找到string中的所有匹配子字符串,若没有找到任何匹配的子串,则返回null,如果找到一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组与前者大不相同,它的数组元素中存放的是string中所有的匹配子串,而且也没有index属性或input属性。

注意: 在全局检索模式下,match()既不提供与子表达式匹配的文本信息,也不声明每个匹配子串的位置,如果需要这些全局检索的信息,可以使用RegExp.exec()

substring()方法

该方法用于提取字符串中介于两个指定下标之间的字符

stringObject.substring(start,stop)

参数说明: start - 必需,一个非负整数,要提取子串的起始位置; stop - 可选,一个非负整数,如果省略该参数,则提取的子串一直到字符串的结尾。

说明: 如果start与stop相等,则返回一个空字符串;如果start比stop大,则该方法会先交换两个参数的位置,然后再执行提取操作。

substr()方法

该方法用于从字符串中抽取start下标开始的指定数目的字符

stringObject.substr(start,length)

参数说明: start - 必需,要抽取的子串的起始下标,必需是数值,如果是负数,则位置从尾部开始算起;length - 可选,子串中的字符数,必需是数值,如果省略,则一直抽取到结尾的字符串。

重要事项: ECMAscript中没有对该方法进行标准化,因此反对使用它

window.location.search

Location对象包含有关当前URL的信息

Location对象是Window对象的一个部分,可通过window.location属性来访问

search是Location对象的一个属性,可读可写,设置或返回从问好(?)开始的URL(查询部分)

location.search=path_from_questionmark

Location对象的其它属性

property description
hash 设置或返回从井号(#)开始的URL(锚)
host 设置或返回主机名和当前URL的端口号
hostname 设置或返回当前URL的主机名
href 设置或返回完整的URL
pathname 设置或返回当前URL的路径部分
port 设置或返回当前URL的端口号
protocol 设置或返回当前URL的协议

Location对象方法:

assign() 加载新的文档 location.assign(URL)

reload() 重新加载当前文档

说明: 如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变。如果文档已改变,reload() 会再次下载该文档。如果文档未改变,则该方法将从缓存中装载文档。这与用户单击浏览器的刷新按钮的效果是完全一样的;如果把该方法的参数设置为 true,那么无论文档的最后修改日期是什么,它都会绕过缓存,从服务器上重新下载该文档。这与用户在单击浏览器的刷新按钮时按住 Shift 健的效果是完全一样。

replace() 用新的文档替换当前的文档

说明: replace()方法不会再History对象中生成一个新的记录,当使用该方法时,新的URL将覆盖History对象中的当前记录。

encodeURIComponent()函数与encodeURI()函数

前者假定它的参数是URI的一部分(比如协议、主机名、路径或查询字符串),因此encodeURIComponent()函数将转义用于分割URI各个部分的标点符号。

总结: escape()除了ASCII字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL进行编码,最好不要使用此方法;encodeURI()方法用于编码整个URI,URI中的合法字符都不会被编码转换;encodeURIComponent()方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以将参数中的中文、特殊字符进行转义,而不会影整个URL。

正则两种写法的区别

var reg = /a/; // 一般情况下都使用简写的方式,性能较好

var reg = new RegExp('a'); // 需要传入参数的时候使用这种声明方式

JS获取URL参数的值的更多相关文章

  1. js 获取url参数的值

    //获取url参数函数function GetQueryString(name){    var reg = new RegExp("(^|&)"+ name +" ...

  2. get方法与post方法的区别与js获取url参数的方式

    1.get方法与post方法的区别: 区别一:get重点在从服务器上获取资源,post重点在向服务器发送数据:区别二:get传输数据是通过URL请求,以field(字段)= value的形式,置于UR ...

  3. js获取url参数的方法

    js获取url参数的方法有很多. 1.正则分析 function getQueryString(name) { var reg = new RegExp("(^|&)" + ...

  4. .NET手记-JS获取Url参数

    最近为App做活动专区,其中很多活动都是采用html 5页面来制作的.一方面体量较小,制作快速,更新维护容易:另一方面,嵌入App后适配效果也不会很差. 这里我们采用混编形式来从native app传 ...

  5. js获取url参数,操作url参数

    function getParam(key) { var tmp = location.search; tmp = decodeURIComponent(tmp); var index = tmp.i ...

  6. jquery或js 获取url参数

    <script type="text/javascript"> function getUrlParam(name) { var reg = new RegExp(&q ...

  7. js获取url参数、图片转本地base64跨域问题

    获取url参数是经常需要用的一个方法,url上的参数可以让我们的程序执行更灵活. 图片转本地也是很实用的,因为海报合成通常只支持本地. 下面我们来看看这些功能的实现: 获取所有参数,采用split拆分 ...

  8. JS获取URL传的值与解决获取URL中的中文参数出现乱码

    大家好,我是小C, 我们在项目开发中有时需要页面与页面之间的传值,那我们可能会选择用地址栏传递参数,那另外的那个页面就需要获取地址栏里的参数,今天分享下关于地址栏怎么传递参数与获取中文参数出现乱码的解 ...

  9. 【2019】问题记录一:后端获取URL参数的值内加号“+”变成空格“ ”

    问题:URL参数中加号“+”变成空格“ ” 一.现象     URL如:http://example.****.com/controller/action?param=rice+cook+panda ...

随机推荐

  1. 微信小程序倒计时

    今天做程序要做个限时抢购的功能如图: 先上代码: 源码 index.wxml    可根据自己实际需求改改 <view class="div-content-warp"> ...

  2. WPF 绑定密码

    我们发现我们无法绑定密码框的密码,PasswordBox 的 Password 不能绑定. 我们想做 MVVM ,我们需要绑定密码,不能使用前台 xaml.cs 监听 密码改变得到密码的值,传到 Vi ...

  3. JAVA编程入门

    java最早是由Sun公司基于C++开发而成的新一代编程语言也是现行下的主流行编程语言,其原始的主要用于嵌入式开发.java的第一个版本为JDK1.0,到2017年已经升级到JAK1.9版本.java ...

  4. uva12716 GCD XOR

    个人博客:http://acbingo.cn/2015/06/04/uva12716/ 被紫薯上*和素数筛法类似*这句话给误解了= =,一直以为存在某种关系,在枚举c或者a时,可以根据当前的答案,筛掉 ...

  5. sap表维护工具来维护自定义表&视图簇的使用

    一.通过表维护工具维护自定义表 1.SE11创建表 2.se11界面的菜单:实用程序->Table Maintenance Generator其实这里就是调用SE54 3.sm30 调用维护好的 ...

  6. C++ 空间配置器(allocator)

    C++ 空间配置器(allocator) 在STL中,Memory Allocator 处于最底层的位置,为一切的 Container 提供存储服务,是一切其他组件的基石.对于一般使用 STL 的用户 ...

  7. js 函数声明和函数表达式

    在ECMAScript中,创建函数的最常用的两个方法是函数表达式和函数声明,因为ECMA规范只明确了一点:函数声明必须带有标示符(Identifier)(就是大家常说的函数名称),而函数表达式则可以省 ...

  8. transform 各种影响

    1.提升元素的z-index层级,下面这个例子会让前面的图片显示在上面,一般来说应该是后面的覆盖前面图片的 <img src="mm1" style="-ms-tr ...

  9. Spring AOP分析(3) -- CglibAopProxy实现AOP

    上文探讨了应用JDK动态代理实现Spring AOP功能的方式,下面将继续探讨Spring AOP功能的另外一种实现方式 -- CGLIB. 首先,来看看类名CglibAopProxy,该类实现了两个 ...

  10. Xcode修改个性化注释

    1.首先找到Xcode进入包内容 2.依次进入/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Develo ...