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 相关文章推荐
js 页面元素的几个用法总结
Nov 18 Javascript
js判断字符长度及中英文数字等
Mar 19 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
JavaScript 七大技巧(二)
Dec 13 Javascript
JS 获取HTML标签内的子节点的方法
Sep 21 Javascript
jQuery+ajax的资源回收处理机制分析
Jan 07 Javascript
微信小程序实现倒计时60s获取验证码
Apr 17 Javascript
使用watch监听路由变化和watch监听对象的实例
Feb 24 Javascript
Vue 中如何正确引入第三方模块的方法步骤
May 05 Javascript
javascript异步处理与Jquery deferred对象用法总结
Jun 04 jQuery
vue同个按钮控制展开和折叠同个事件操作
Jul 29 Javascript
vue实现在data里引入相对路径
Jun 05 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
xml在joomla表单中的应用详解分享
2012/07/19 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
2019/12/25 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
js change,propertychange,input事件小议
2011/12/20 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
js控制分页打印、打印分页示例
2014/02/08 Javascript
javascript实现的固定位置悬浮窗口实例
2015/04/30 Javascript
javascript控制台详解
2015/06/25 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
利用node.js如何搭建一个简易的即时响应服务器
2017/05/28 Javascript
在 Angular中 使用 Lodash 的方法
2018/02/11 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
python使用xmlrpclib模块实现对百度google的ping功能
2015/06/02 Python
python set集合使用方法解析
2019/11/05 Python
python flask中动态URL规则详解
2019/11/22 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
python3爬虫中异步协程的用法
2020/07/10 Python
python asyncio 协程库的使用
2021/01/21 Python
图库照片、免版税图片、矢量艺术、视频片段:Depositphotos
2019/08/02 全球购物
建筑设计专业求职自我评价
2014/03/02 职场文书
财务科科长岗位职责
2014/03/10 职场文书
黄金酒广告词
2014/03/21 职场文书
庆元旦活动总结
2014/07/09 职场文书
党员民主评议自我评价
2014/10/20 职场文书
计算机实训报告范文
2014/11/05 职场文书
在校学生证明格式
2015/06/24 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
四年级语文教学反思
2016/03/03 职场文书
python控制台打印log输出重复的解决方法
2021/05/14 Python
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android