JS获取URL参数的值
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参数的值的更多相关文章
- js 获取url参数的值
//获取url参数函数function GetQueryString(name){ var reg = new RegExp("(^|&)"+ name +" ...
- get方法与post方法的区别与js获取url参数的方式
1.get方法与post方法的区别: 区别一:get重点在从服务器上获取资源,post重点在向服务器发送数据:区别二:get传输数据是通过URL请求,以field(字段)= value的形式,置于UR ...
- js获取url参数的方法
js获取url参数的方法有很多. 1.正则分析 function getQueryString(name) { var reg = new RegExp("(^|&)" + ...
- .NET手记-JS获取Url参数
最近为App做活动专区,其中很多活动都是采用html 5页面来制作的.一方面体量较小,制作快速,更新维护容易:另一方面,嵌入App后适配效果也不会很差. 这里我们采用混编形式来从native app传 ...
- js获取url参数,操作url参数
function getParam(key) { var tmp = location.search; tmp = decodeURIComponent(tmp); var index = tmp.i ...
- jquery或js 获取url参数
<script type="text/javascript"> function getUrlParam(name) { var reg = new RegExp(&q ...
- js获取url参数、图片转本地base64跨域问题
获取url参数是经常需要用的一个方法,url上的参数可以让我们的程序执行更灵活. 图片转本地也是很实用的,因为海报合成通常只支持本地. 下面我们来看看这些功能的实现: 获取所有参数,采用split拆分 ...
- JS获取URL传的值与解决获取URL中的中文参数出现乱码
大家好,我是小C, 我们在项目开发中有时需要页面与页面之间的传值,那我们可能会选择用地址栏传递参数,那另外的那个页面就需要获取地址栏里的参数,今天分享下关于地址栏怎么传递参数与获取中文参数出现乱码的解 ...
- 【2019】问题记录一:后端获取URL参数的值内加号“+”变成空格“ ”
问题:URL参数中加号“+”变成空格“ ” 一.现象 URL如:http://example.****.com/controller/action?param=rice+cook+panda ...
随机推荐
- ActivityManager与Proxy模式的运用
Android学习——ActivityManager与Proxy模式的运用 一 Proxy模式 意图: 为其他对象提供一种代理以控制这个对象的访问. 适用性: l 远程代理( Remote Prox ...
- sublime addons backup
1.you can create a file to store you installed addons and use git to store github.com just like that ...
- 写博客 Why?
博客?英文名字为blogger,它是一种网络日记. 一.我为什么要写博客? 这是我第一回写博客,写的可能不是非常的好,请多多给些意见.在平常的学习的时候,我怕忘掉自己学的知识,常常都会记录下来,但回头 ...
- VMware Tools安装方法及共享文件夹设置方法
正确安装好VMware Tools后,可以实现主机与虚拟机之间的文件共享, 可以设置共享文件夹,以及在主机与虚拟机之间直接进行复制黏贴的操作. 安装方法: 选择"虚拟机"-> ...
- 前端(各种demo):右侧导航栏的折叠和打开(不使用js)基础版和升级版
1.给div设置定位. 复习一下—— css中position有五种属性: static:默认值,没有定位 absolute:绝对定位,相对于父级元素进行定位 relative:相对定位 fixed: ...
- Linux入门(14)——Ubuntu常用快捷键
打开终端:ctrl + alt + T 左右分屏:ctrl + win + 箭头左或者箭头右 显示桌面:Ctrl + win + D 切换工作区:ctrl + alt + 箭头左或者箭头右 新建文件夹 ...
- Python学习笔记(二)-Python文件类型及编程模式
Python环境搭建:linux,Windows... Linux下:[root@localhost StudyPython]# python #进入交互模式Python 2.7.11 (defaul ...
- c++连接数据库 在vc6.0
配置相关环境 我的mysql安装路径为E:\mysql-5.5.28-win32所以要在VC中设置include路径和lib的路径. 添加MySql的include目录到VC工作台中Project-& ...
- angular1.x + ES6开发风格记录
angular1.x和ES6开发风格 一.Module ES6有自己的模块机制,所以我们要通过使用ES6的模块机制来淡化ng的框架,使得各业务逻辑层的看不出框架的痕迹,具体的做法是: 把各功能模块的具 ...
- 0_Simple__inlinePTX + 0_Simple__inlinePTX_nvrtc
在核函数代码中加入并行线程执行(Parallel Thread eXecution,PTX),通过汇编指令获取得有关线程束的信息.并且在静态代码和运行时编译两种条件下使用. ▶ 源代码:静态使用 #i ...