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 语句与 ...
随机推荐
- svn: E175002: can not read HTTP status line
问题:eclipse连接svn:https://bdsvn-pc/svn/Project,报错svn: E175002: can not read HTTP status line 解决办法:将域名改 ...
- Java List循环(转)
List有三种循环方式: 分别是经典的for循环,迭代器(list.iterator()),foreache循环(和C#相同哦) 测试代码如下: public static void main(Str ...
- SQL Developer不能删除和复制及部分键失效问题
打开SQL Developer工作表进行SQL代码的编写的时候,发现我不能使用回车换行键,然后陆续发现好多按键在SQL Developer中都不能正常使用,如:上下左右键只有上和右可以使用,不能使用D ...
- Remove Duplicates from Sorted List(链表)
Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...
- ListView中内容的动画效果
LayoutAnimationController用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果,可以在XML文件中设置,亦可以在Java代码中设置. 一种直接在 ...
- css first-letter实现首字(字母)下沉效果
css 首字下沉效果原理 首字下沉主要使用到css的first-letter伪元素,然后配合使用font-size和float来设置文字的样式即可实现. first-letter选择器选取指定元素文本 ...
- app与服务器对接
如何做ios的app与服务器的数据传输
- ios 对齐属性
四个容易混淆的属性:1. textAligment : 文字的水平方向的对齐方式1> 取值NSTextAlignmentLeft = 0, // 左对齐NSTextAlignme ...
- JavaScript对象的创建之基于构造方法+原型方式
为了解决原型所带来的问题,此处需要通过组合构造方法和原型来实现对象的创建,将属性在构造方法中定义,将方法在原型中定义.这种有效集合了两者的优点,是目前最为常用的一种方式. function Perso ...
- windows Phone 浏览器窗口的尺寸
移动设备的屏幕一般都比PC小很多,移动设备的浏览器会将一个较大的 “虚拟” 窗口映射到移动设备的屏幕上,然后按一定的比例(3:1或2:1)进行缩放.也就是说当我们加载一个普通网页的时候,移动浏览器 ...