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 ...
随机推荐
- jscodeshift 简易教程
本文首发于 https://github.com/whxaxes/blog/issues/10 背景 jscodeshift 是 fb 出的一个 codemod toolkit,基于 recast 这 ...
- vue学习前奏——webpack
"工欲善其事必先利其器",要想学习vue,首先需要我们去了解webpack,便于后期快速构建运行项目.废话不多说,下面开始介绍在开始一个vue项目前我们需要对webpack有一定的 ...
- win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock
我在堆栈网看到有人问 如何拖动一个TextBlock的文字到另一个TextBlock 于是看到一个大神给出的方法,下面我就来和大家说下如何拖动 一开始我们需要一个界面,就放两个TextBlock 一个 ...
- MongoDB基本命令行操作
1. 连接MongoDB: Mongodb://username:password@hostname/dbname 2. 创建数据库: use dbname:如果数据库不存在则创建数据库,否则切换到指 ...
- 关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态
关于火狐浏览器在开发调试过程中,出现javascript:void(0)的状态 由于火狐浏览器没有安装 Adobe Flash Player 19 NPAPI这个插件 安装好了之后就可以直接运行了
- IntelliJ下断点不可用 No executable code found
情景说明:ant工程+IntelliJ Idea 采取copy编译后的class文件到WEB-INF/classes目录下,断点一直不可用 如图: 网上查了很多资料都说的不够明确,IntelliJ社区 ...
- 前端性能优化jQuery性能优化
一.使用合适的选择器 $("#id"); 1.使用id来定位DOM元素无疑是最佳提高性能的方式,因为jQuery底层将直接调用本地方法document.getElementById ...
- Codeforces 376B. Coupons and Discounts
B. Coupons and Discounts time limit per test 1 second memory limit per test 256 megabytes input stan ...
- 关于Mybaits映射一点心得
本人的第一篇手写博客 -日期2017-11-06 在写博客之前一直使用手写笔记!!! 以前一直使用Hibernate,基本上没用过Mybatis,工作中需要做映射关系,简单的了解下Mybatis的映射 ...
- 70、django之Ajax初识
Ajax准么说是用于Javascript与服务器端进行交互的,我们之前呢没有了解ajax也同样可以完成与服务器的交互,那么ajax的优势在哪里?首先ajax是异步交互的也就是说我们基本不会遇到卡顿现象 ...