Javascript中正则表达式的全局匹配模式分析


Posted in Javascript onApril 26, 2011
var str = "123#abc"; 
var re = /abc/ig; 
console.log(re.test(str)); //输出ture 
console.log(re.test(str)); //输出false 
console.log(re.test(str)); //输出ture 
console.log(re.test(str)); //输出false

在创建正则表达式对象时如果使用了“g”标识符或者设置它了的global属性值为ture时,那么新创建的正则表达式对象将使用模式对要将要匹配的字符串进行全局匹配。在全局匹配模式下可以对指定要查找的字符串执行多次匹配。每次匹配使用当前正则对象的lastIndex属性的值作为在目标字符串中开始查找的起始位置。lastIndex属性的初始值为0,找到匹配的项后lastIndex的值被重置为匹配内容的下一个字符在字符串中的位置索引,用来标识下次执行匹配时开始查找的位置。如果找不到匹配的项lastIndex的值会被设置为0。当没有设置正则对象的全局匹配标志时lastIndex属性的值始终为0,每次执行匹配仅查找字符串中第一个匹配的项。可以通下面的代码来查看在执行匹配相应的lastIndex 属性的值。
var str = "123#abc"; 
var re = /abc/ig; 
console.log(re.test(str)); //输出ture 
console.log(re.lastIndex); //输出7 
console.log(re.test(str)); //输出false 
console.log(re.lastIndex); //输出0 
console.log(re.test(str)); //输出ture 
console.log(re.lastIndex); //输出7 
console.log(re.test(str)); //输出false 
console.log(re.lastIndex); //输出0

关于RegExp.prototype.exec(str)方法和String.prototype.math(rgExp)方法

正则对象的test方法返回值为true或flase,在仅需要检测目标字符串与指定模式是否匹配,但不需要获取匹配内容时这个方法非常有用。当需要获取匹配结果时就需要用RegExp类型的exec(str)方法或String类型的match(rgExp)方法。

RegExp.prototype.exec(str)方法返回NULL或返会一个数组,在数组的第0个元素存放的是在字符串str中查找到的匹配内容,1到n个元素返回的是在模式中使用括号"()"指定的子匹配项的内容。

在没有使用全局标志时String.prototype.math(rgExp)方法和RegExp.prototype.exec(str)的行为类似。当设置了全局匹配标志时String.prototype.math(rgExp)方法返回的数组项元素0到n中包含了所有匹配到的项不包含子匹配项。这时可以使用RegExp.$1..$9获取9个子匹配。

Javascript 相关文章推荐
JavaScript 事件查询综合
Jul 13 Javascript
Jquery中获取iframe的代码
Jan 11 Javascript
javascript 拖动表格行实现代码
May 05 Javascript
js传参数受特殊字符影响错误的解决方法
Oct 21 Javascript
jQuery中:selected选择器用法实例
Jan 04 Javascript
异步安全加载javascript文件的方法
Jul 21 Javascript
JavaScript方法_动力节点Java学院整理
Jun 28 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
Nov 22 Javascript
vue自定v-model实现表单数据双向绑定问题
Sep 03 Javascript
Vuex mutitons和actions初使用详解
Mar 04 Javascript
javascript实现文字跑马灯效果
Jun 18 Javascript
javascript代码实现简易计算器
Jan 25 Javascript
说明你的Javascript技术很烂的五个原因
Apr 26 #Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
Apr 26 #Javascript
用jquery实现自定义风格的滑动条实现代码
Apr 26 #Javascript
超轻量级的基于jquery的三级展开列表
Apr 26 #Javascript
jqPlot 基于jquery的画图插件
Apr 26 #Javascript
让浏览器非阻塞加载javascript的几种方法小结
Apr 25 #Javascript
jQuery 版元素拖拽原型代码
Apr 25 #Javascript
You might like
各种战术和打法的原创者
2020/03/04 星际争霸
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
destoon各类调用汇总
2014/06/20 PHP
ThinkPHP采用实现三级循环代码实例
2014/07/18 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
js计数器代码
2006/11/04 Javascript
一段效率很高的for循环语句使用方法
2007/08/13 Javascript
javascript String 的扩展方法集合
2008/06/01 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
AngularJS  $modal弹出框实例代码
2016/08/24 Javascript
jquery实现全选、不选、反选的两种方法
2016/09/06 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
vue-router单页面路由
2017/06/17 Javascript
JS+canvas动态绘制饼图的方法示例
2017/09/12 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
JavaScript中EventLoop介绍
2018/01/22 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
简单了解python协程的相关知识
2019/08/31 Python
HTML5 canvas基本绘图之绘制阴影效果
2016/06/27 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
党校自我鉴定范文
2013/10/02 职场文书
商务会议邀请函
2014/01/09 职场文书
奥利奥广告词
2014/03/20 职场文书
计生工作先进事迹
2014/08/15 职场文书
《为人民服务》教学反思
2016/02/20 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书