JavaScript红宝书笔记(六)---RegExp类型
栏目: JavaScript · 发布时间: 5年前
内容简介:1.var someDate = new Date(Date.parse("May 25, 2004"));可用来计算时间差new Date()也行,不过需要转换成字符串来计算2.创建正则表达式:
1.var someDate = new Date(Date.parse("May 25, 2004"));可用来计算时间差
//取得开始时间 var start = Date.now(); //调用函数 doSomething(); //取得停止时间 var stop = Date.now(), result = stop – start;
new Date()也行,不过需要转换成字符串来计算
2.创建正则表达式:
var expression = / pattern / flags ; var pattern1 = /[bc]at/i; var pattern2 = new RegExp("[bc]at", "i");
正则表达式可以带有一个或多个标志:
g:表示全局( global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即
停止;
i:表示不区分大小写( case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
m:表示多行( multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模
式匹配的项。
/* * 匹配字符串中所有"at"的实例 */ var pattern1 = /at/g; /* * 匹配第一个"bat"或"cat",不区分大小写 */ var pattern2 = /[bc]at/i; /* * 匹配所有以"at"结尾的 3 个字符的组合,不区分大小写 */ var pattern3 = /.at/gi;
3.由于 RegExp 构造函数的模式参数是字符串,所有元字符都必须双重转义
/\[bc\]at/ "\\[bc\\]at" /\.at/ "\\.at" /name\/age/ "name\\/age" /\d.\d{1,2}/ "\\d.\\d{1,2}" /\w\\hello\\123/ "\\w\\\\hello\\\\123"
4.正则表达式字面量始终会共享同一个 RegExp 实例,而使用构造函数创建的每一个新 RegExp 实例都是一个新实例
var re = null, i; for (i=0; i < 10; i++){ re = /cat/g; re.test("catastrophe"); } for (i=0; i < 10; i++){ re = new RegExp("cat", "g"); re.test("catastrophe"); }
在第一个循环中,即使是循环体中指定的,但实际上只为/cat/创建了一个 RegExp 实例。由于实例属性不会重置,所以在循环中再次调用 test()方法会失败。这是因为第一次调用 test()找到了"cat",但第二次调用是从索引为 3 的字符(上一次匹配的末尾)开始的,所以就找不到它了。由于会测试到字符串末尾,所以下一次再调用 test()就又从开头开始了。
第二个循环使用 RegExp 构造函数在每次循环中创建正则表达式。因为每次迭代都会创建一个新的RegExp 实例,所以每次调用 test()都会返回 true
5.RegExp实例属性:
RegExp 的每个实例都具有下列属性,通过这些属性可以取得有关模式的各种信息。
global:布尔值,表示是否设置了 g 标志。
ignoreCase:布尔值,表示是否设置了 i 标志。
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从 0 算起。
multiline:布尔值,表示是否设置了 m 标志。
source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
6.RegExp实例方法:
RegExp 对象的主要方法是 exec(),该方法是专门为捕获组而设计的
var text = "mom and dad and baby"; var pattern = /mom( and dad( and baby)?)?/gi; var matches = pattern.exec(text); alert(matches.index); // 0 alert(matches.input); // "mom and dad and baby" alert(matches[0]); // "mom and dad and baby" alert(matches[1]); // " and dad and baby" alert(matches[2]); // " and baby"
其中, index 表示匹配项在字符串中的位置,而 input 表示应用正则表达式的字符串
正则表达式的第二个方法是 test(),它接受一个字符串参数。在模式与该参数匹配的情况下返回true;否则,返回 false。
var text = "000-00-0000"; var pattern = /\d{3}-\d{2}-\d{4}/; if (pattern.test(text)){ alert("The pattern was matched."); }
以上所述就是小编给大家介绍的《JavaScript红宝书笔记(六)---RegExp类型》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- MySQL 笔记 - 索引类型
- 基本类型_TypeScript笔记2
- Go语言笔记 | 06-基本类型
- JavaSe笔记01-关于数据类型
- Golang 笔记-基本数据类型转换
- typescript学习笔记(一)--- 数据类型
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
REST实战
Jim Webber、Savas Parastatidis、Ian Robinson / 李锟、俞黎敏、马钧、崔毅 / 东南大学出版社 / 2011-10 / 78.00元
为何典型的企业项目无法像你为web所开发的项目那样运行得如此平滑?对于建造分布式和企业级的应用来说,rest架构风格真的提供了一个可行的替代选择吗? 在这本富有洞察力的书中,三位soa专家对于rest进行了讲求实际的解释,并且通过将web的指导原理应用到普通的企业计算问题中,向你展示了如何开发简单的、优雅的分布式超媒体系统。你将会学习到很多技术,并且随着一家典型的公司从最初的小企业逐渐成长为......一起来看看 《REST实战》 这本书的介绍吧!