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 相关文章推荐
jQuery解决下拉框select设宽度时IE 6/7/8下option超出显示不全
May 27 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
Javscript调用iframe框架页面中函数的方法
Nov 01 Javascript
深入解读JavaScript中的Iterator和for-of循环
Jul 28 Javascript
针对初学者的jQuery入门指南
Aug 15 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
WebSocket实现简单客服聊天系统
May 12 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
js调用网络摄像头的方法
Dec 05 Javascript
详解ES6实现类的私有变量的几种写法
Feb 10 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
说明你的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
使用Yii2实现主从数据库设置
2016/11/20 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
JS实现点击网页判断是否安装app并打开否则跳转app store
2016/11/18 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
React Native预设占位placeholder的使用
2017/09/28 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
python实现线程池的方法
2015/06/30 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
智能钱包:Ekster
2019/11/21 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
护理助产毕业生的求职信
2014/03/02 职场文书
出纳担保书范文
2014/04/02 职场文书
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
股份转让协议书
2014/04/12 职场文书
医药销售自荐书
2014/05/29 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
房贷工资证明范本
2015/06/12 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python
基于Python实现西西成语接龙小助手
2022/08/05 Golang