javascript中match和RegExp组合用法
function getCookie(name)//取cookies函数
{
//coook中document.cookie = "age=12; name=1.css";
var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
if (arr != null) return unescape(arr[2]); return null;
}
//getCookie(name);
//arr[0]="name=1.css"
//arr[1]=""
//arr[2]="1.css"
//arr[3]=""
//为什么arr返回的长度为4的数组?
//在博客园和csdn问了好多都没有一个准确的回答,之后在一步一步实验中发现了答案
//第一步:先匹配"(^| )" + name + "=([^;]*)(;|$)"
//第二步:在匹配()里面的也就是(^| ),([^;]*),(;|$)
//答案就是"(^| )" + name + "=([^;]*)(;|$)",(^| ),([^;]*),(;|$).也就返回了arr长度为4的数组
//注意:一定要第一步能匹配,才会进行第二步匹配.否者直接返回null
//由此举一反三,我们在用javascript获取参数时也以用这个
function Request(name) {
//url=http://localhost:9120/Cookie.html?mly=1&c=12
var arr = window.location.search.match(new RegExp("([(^)(&)(?)])" + name + "=([^&]*)(&|$)"));
if (arr != null) return unescape(arr[2]); return null;
}
//Request("mly"); //返回1
//注意:在前面我们说过()会多次匹配,在()中继续加()还会继续匹配
//例如:"12".match(new RegExp("((1))2"))会返回长度为3的数组,arr[0]=12,arr[1]=1,arr[2]=1;
//例如:"12".match(new RegExp("((1)|(2))2"))会返回长度为4的数组,arr[0]=12,arr[1]=1,arr[2]=1,arr[3]=undefined;
//arr[3]=undefined在右边(2)在第一次匹配时没有用到,以后在与(2)匹配时直接返回undefined;这也证明了有多少个()就会返回()+1个长度的数组
//其中在([(^)(&)(?)])中多次用了(),但是因为在[]中,就不需要遵循以上规则了
javascript中match和RegExp组合用法的更多相关文章
- JavaScript中字符串分割函数split用法实例
这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...
- javascript中this的四种用法
javascript中this的四种用法 投稿:hebedich 字体:[增加 减小] 类型:转载 时间:2015-05-11我要评论 在javascript当中每一个function都是一个对象,所 ...
- javascript中call,apply,bind的用法对比分析
这篇文章主要给大家对比分析了javascript中call,apply,bind三个函数的用法,非常的详细,这里推荐给小伙伴们. 关于call,apply,bind这三个函数的用法,是学习java ...
- javascript中 Array.prototype.slice的用法.
首先看到 www.w3school.cn上的解释:http://www.w3school.com.cn/jsref/jsref_slice_array.asp 定义和用法 slice() 方法可从已有 ...
- 关于JavaScript中apply与call的用法意义及区别
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象. cal ...
- 关于JavaScript中apply与call的用法意义及区别(转)
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象. cal ...
- Javascript中call()和apply()的用法 ----2
前言 call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向.call 和 apply二者的作用完全一样,只是接受 ...
- 【转】javascript中this的四种用法
在函数执行时,this 总是指向调用该函数的对象.要判断 this 的指向,其实就是判断 this 所在的函数属于谁. 在<javaScript语言精粹>这本书中,把 this 出现的场景 ...
- Javascript中while和do-while循环用法详解
while循环 while 语句与 if 语句相似,都有条件来控制语句(或语句块)的执行,其语言结构基本相同:while(conditions){ statements;} while 语句与 ...
随机推荐
- Servlet中的请求转发和重定向
跳转和重定向 有的时候客户端请求到达服务端后需要对请求重新转发到其它Servlet甚至别的服务器,这就需要跳转和重定向. 区别 一般来说,跳转是服务器内部跳转,例如将请求从一个Servlet转发给另外 ...
- 采用p6spy完整显示hibernate的SQL语句
虽然在hibernate中有show_sql选项,但是显示出来的语句大多类似 select * from xxx where value=? 但是有时候我们需要得到完整的SQL语句,怎么办呢?使用P6 ...
- ASP.NET MVC开发微信(三)
- OC基础(13)
内存管理简介 引用计数器 dealloc方法 野指针\空指针 *:first-child { margin-top: 0 !important; } body > *:last-child { ...
- 点评App wiki-git标准实践
fetch与pull fetch = pull + merge fetch -p,用于将清理工作同步到本地repository rebase-衍合 merge与rebase是合并的两种方法(上为mer ...
- MapReduce从输入文件到Mapper处理之间的过程
1.MapReduce代码入口 FileInputFormat.setInputPaths(job, new Path(input)); //设置MapReduce输入格式 job.waitForCo ...
- python学习(二):python基本语法
前言:python基本的语法与其他语言诸如C,JAVA等类似,但个中有些许不同. 一.常规语法 1.变量名与关键字 与其他语言类似,变量名由字母.数字.下划线组成,且必须由字母开头. 变量使用不需要提 ...
- WEB 安全之 SQL注入 < 二 > 暴库
SQL注入是一个比较"古老"的话题,虽然现在存在这种漏洞的站点比较少了,我们还是有必要了解一下它的危害,及其常用的手段,知己知彼方能百战不殆.进攻与防守相当于矛和盾的关系,我们如果 ...
- Powerdesigner 导出Excel格式数据字典 导出Excel格式文件
版权声明:本文为博主原创文章,转载请注明出处; 网上我也看到了很多的Powerdesigner 导出方法,因为Powerdesigner 提供了部分VBA功能,所以让我用代码导出Excel格式文件得以 ...
- 【翻译习作】 Windows Workflow Foundation程序开发-第一章04
1.2.3 Windows Workflow运行时 从Windows Workflow的角度看,可以将工作流活动当成是交给一个工作流处理器去执行的一系列指令或操作码.在Windows Workflo ...