JS中用正则获取URL参数值的问题——JS中match函数的使用
来源:互联网 发布:中文语法分析常用算法 编辑:程序博客网 时间:2024/06/15 11:11
在JS中获取URL中指定参数的值的方法有多种,但我觉得用正则表达式来获取要简洁方便的多。作为一只菜鸟猿,我在万能的网上找到了这样的代码:
var reg = new RegExp("(^|&)参数名称=([^&]*)(&|$)"); //正则表达式var r = window.location.search.substr(1).match(reg); //window.location.search.substr(1)截取URL中?后面的部分开心的把r当成匹配出的参数值结果去使用却不正确,原来r是一个数组。细看网上写的代码:
var reg = new RegExp("(^|&)参数名称=([^&]*)(&|$)");var r = window.location.search.substr(1).match(reg);var 参数值 = unescape(r[2]);
unescape函数很好理解,是对URL进行解码。那么为什么参数值是取r[2]呢?这就涉及到JS中match函数的用法了,查了W3school的文档,有这样一句话:如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。这就很好理解了,我们的match匹配返回的r中第0个元素是匹配的文本,后面的元素是正则子表达式匹配的文本。那么为什么参数匹配出来是第2个元素呢?用以下代码测试:
var reg = new RegExp("(^|&)paramname=([^&]*)(&|$)");var s="?paramname=paramValue";var paramValue = s.substr(1).match(reg);console.log(paramValue);浏览器中打印出的结果如下:
可以看出,其实第1个元素对应的就是正则表达式里面第一个括号中的子表达式((^|&)paramname=([^&]*)(&|$))的匹配,第2个元素对应正则表达式中第二个括号中的子表达式((^|&)paramname=([^&]*)(&|$))的匹配,类推。所以,可见JS中match的第n位元素其实对应的是它匹配的正则表达式的第n个括号中的子表达式的匹配文本。
以上,记录,完。
0 0
- JS中用正则获取URL参数值的问题——JS中match函数的使用
- 【JS-01】正则表达式获取url的参数值
- JS获取URL参数的函数
- JS使用正则表达式获取URL参数
- JS获取URL中GET的参数
- js中获取URL参数的方法
- js获取url中参数的方法
- js获取url中传递的参数
- js获取URL中传来的参数
- 使用JS获取URL的参数(一)
- 使用JS获取URL的参数(二)
- Js的Url中传递中文参数乱码,如何获取Url中参数问题
- Js的Url中传递中文参数乱码,如何获取Url中参数问题
- Js的Url中传递中文参数乱码,如何获取Url中参数问题
- Js的Url中传递中文参数乱码,如何获取Url中参数问题
- Js的Url中传递中文参数乱码,如何获取Url中参数问题
- Js的Url中传递中文参数乱码,如何获取Url中参数问题
- Js的Url中传递中文参数乱码,如何获取Url中参数问题
- singleTask 特性
- Linux下使用Fastboot给手机刷ROM
- 深入理解 sudo 与 su 之间的区别
- javascript放在head和body的区别
- Mapped Statements collection already contains value for com。。。
- JS中用正则获取URL参数值的问题——JS中match函数的使用
- CentOS6/7上phpmyadmin安装和配置总结 配合apache2.4
- HelloWorld
- sharePreference笔记
- bzoj1625
- mysql 创建root用户和普通用户 修改,删除
- bootstrapValidator代码中开启验证和判断验证是否通过
- 查找一张表索引大于5
- Hololens输入——Unity语音输入