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之typeof、instanceof操作符使用探讨
May 19 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
ie8模式下click无反应点击option无反应的解决方法
Oct 11 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
jquery滚动到顶部底部代码
Apr 20 Javascript
Three.js学习之网格
Aug 10 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
Aug 18 Javascript
get  post jsonp三种数据交互形式实例详解
Aug 25 Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 Javascript
vue2.0模拟锚点的实例
Mar 14 Javascript
vue中使用better-scroll实现滑动效果及注意事项
Nov 15 Javascript
vue路由插件之vue-route
Jun 13 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
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
php+ajax无刷新上传图片的实现方法
2016/12/06 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
生成二维码方法汇总
2014/12/26 Javascript
js简单抽奖代码
2015/01/16 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
2017/04/12 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
Vue分页效果与购物车功能
2019/12/13 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
vue组件系列之TagsInput详解
2020/05/14 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
2020/01/16 Python
python 爬取小说并下载的示例
2020/12/07 Python
美国女孩洋娃娃店:American Girl
2017/10/24 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
党员一帮一活动总结
2014/07/08 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
2015年学校教务处工作总结
2015/05/11 职场文书
刑事撤诉申请书
2015/05/18 职场文书
预备党员介绍人意见
2015/06/01 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书