浅谈regExp的test方法取得的值变化的原因及处理方法


Posted in Javascript onMarch 01, 2017

1、JavaScript 正则表达式对象RegExp的test方法,用于检测一个字符串是否匹配某个模式。

字面量定义RegExp对象:var re = /pattern/attributes,其中attributes可以是g,i,m;

阅读以下程序:

<script type="text/javascript"> 
var str = 'abc123'; 
var re = /^abc/g ;
var result1 = re.test(str); 
var result2 = re.test(str); 
var result3 = re.test(str); 
document.write('result1:' + result1 + '<br/>'); 
document.write('result2:' + result2 + '<br/>'); 
document.write('result3:' + result3); 
</script>

我们会认为打印结果应该是true;true;true;

而实际情况却是true;false;true;

2、为什么第二个结果是false?

发现RegExp对象有一个lastIndex的属性,如果使用了全局修饰符,那么执行test方法后,lastIndex就会记录匹配的字符串在原始字 符串中最后一位的索引加一,例如执行了var result1 = re.test(str)后lastIndex为3(document.write('re.lastindex:' + re.lastIndex+ '<br/>');),如果没有发现匹配lastIndex置为0。当下次再执行时,对给定的字符串匹配不是从开头位置,而是要依据lastIndex提供的位置,由于这个原因,所以导致上例中result2的值为false。

3、处理方法:去除g;

即:var re = /^abc/g ;变为 var re = /^abc/;

以上这篇浅谈regExp的test方法取得的值变化的原因及处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery命令汇总,方便使用jquery的朋友
Jun 26 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
Dec 26 Javascript
浅析jQuery EasyUI中的tree使用指南
Dec 18 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
Sep 30 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
工厂模式在JS中的实践
Jan 18 Javascript
Vue.use源码分析
Apr 22 Javascript
基于JavaScript实现一个简单的Vue
Sep 26 Javascript
JavaScript实现新年倒计时效果
Nov 17 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 jQuery
vue制作抓娃娃机的示例代码
Apr 17 Javascript
vue缓存之keep-alive的理解和应用详解
Nov 02 Javascript
Angular之指令Directive用法详解
Mar 01 #Javascript
js for循环倒序输出数组元素的实例
Mar 01 #Javascript
JSON与JS对象的区别与对比
Mar 01 #Javascript
JavaScript下拉菜单功能实例代码
Mar 01 #Javascript
Angular2 路由问题修复详解
Mar 01 #Javascript
浅谈js for循环输出i为同一值的问题
Mar 01 #Javascript
jQuery EasyUI Draggable拖动组件
Mar 01 #Javascript
You might like
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php 发送带附件邮件示例
2014/01/23 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
通过设置CSS中的position属性来固定层的位置
2015/12/14 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
Python中的闭包总结
2014/09/18 Python
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
PHP如何设置和取得Cookie值
2015/06/30 面试题
保洁主管岗位职责
2013/11/20 职场文书
金属材料工程个人求职的自我评价
2013/12/04 职场文书
公司道歉信范文
2014/01/09 职场文书
小学英语教学反思案例
2014/02/04 职场文书
保护动物的标语
2014/06/11 职场文书
团日活动总结报告
2014/06/25 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
小学教师自我评价
2015/03/04 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
在python中实现导入一个需要传参的模块
2021/05/12 Python
python中的sys模块和os模块
2022/03/20 Python
css3 选择器
2022/05/11 HTML / CSS