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 ...
随机推荐
- linux 下的文件目录操作之遍历目录
通过递归调用读取目录和文件信息去遍历整个目录: 示例代码: #include <unistd.h> #include <stdio.h> #include <dirent ...
- GoldenGate 复制进程报错"OGG-01296 Error mapping",丢弃文件报错“Mapping problem with delete record (target format)”,且实际条目存在
故障描述: (1).复制进程 Abended,通过view report语句查看可发现类似如下的报错: 2017-10-23 15:01:43 ERROR OGG-01296 Error mappin ...
- Spark 基本概念
Application:用户编写的 Spark 应用程序,包含驱动程序(Driver),和分布在集群中多个节点上运行的 Executor 代码,在执行过程中由一个或多个作业组成 Driver(驱动程序 ...
- Python 的装饰器
Python 在语言级别提供了装饰器模式的实现,代码中Python内置的 functools.wraps 会完成包括函数名属性处理替换 #!/usr/bin/env python3 #--coding ...
- 重写equals和hashCode
equals()方法 1. 自反性:A.equals(A)要返回true. 2. 对称性:如果A.equals(B)返回true, 则B.equals(A)也要返回true. 3. 传递性:如果A.e ...
- 05-从零玩转JavaWeb-彻底搞懂值传递
一.数据类型分类 基本数据类型: 只有一块存储空间, 在栈中,存放的是具体的值 引用数据类型: 引用数据类型有两块存储空间 一个在栈(Stack)中,一个在堆(heap) ...
- MFC属性表单修改“应用”键名并对其响应
1.重载CPropertySheet的虚函数OnInitDialog(),添加如下代码 BOOL DialogInputData::OnInitDialog() { BOOL bResult = CP ...
- glog 使用
glog 使用 来源:http://www.cnblogs.com/tianyajuanke/archive/2013/02/22/2921850.html 一.安装配置 1.简介 google 出的 ...
- 状压DP小结
看了一个多星期状压DP,总算有点明白,大概可以分为两种:数据是在矩阵中的,数据是线性的,在矩阵中的一般就是排兵布阵这一种的,还有一种线性结构中给定条件让你求最大权值,比如求最大权值路线,TSP问题等, ...
- css之定位(position)
1.什么是定位: css中的position属性,position有四个值:absolute/relative/fixed/static(绝对/相对/固定/静态(默认))通过定位属性可以设置一些不规则 ...