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 validate使用攻略 第四步
Jul 01 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
JavaScript中关于iframe滚动条的去除和保留
Nov 17 Javascript
JavaScript生成.xls文件的代码
Dec 22 Javascript
深入理解ES7的async/await的用法
Sep 09 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
Mar 08 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
Aug 31 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
Nov 05 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
微信小程序APP的生命周期及页面的生命周期
Apr 19 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基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
jquery 输入框数字限制插件
2009/11/10 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
2018/07/21 Javascript
在JS循环中使用async/await的方法
2018/10/12 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
Taro小程序自定义顶部导航栏功能的实现
2020/12/17 Javascript
实例讲解Python中函数的调用与定义
2016/03/14 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
Python设计模式之备忘录模式原理与用法详解
2019/01/15 Python
Python笔记之facade模式
2019/11/20 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
Django 设置多环境配置文件载入问题
2020/02/25 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
纠风工作实施方案
2014/03/15 职场文书
档案保密承诺书
2014/06/03 职场文书
订货会邀请函
2015/01/31 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
创业计划书之游泳馆
2019/09/16 职场文书
简述python四种分词工具,盘点哪个更好用?
2021/04/13 Python
深入理解pytorch库的dockerfile
2022/06/10 Python