浅谈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+json实现的搜索加分页效果
Mar 31 Javascript
学习并汇集javascript匿名函数
Nov 25 Javascript
javascript 实现键盘上下左右功能的小例子
Sep 15 Javascript
一个字符串中出现次数最多的字符 统计这个次数【实现代码】
Apr 29 Javascript
JavaScript必知必会(三) String .的方法来自何方
Jun 08 Javascript
vue-dialog的弹出层组件
May 25 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
jquery animate动画持续运动的实例
Nov 29 jQuery
关于JavaScript语句后面的分号问题
Dec 07 Javascript
layer弹出层自适应高度,垂直水平居中的实现
Sep 16 Javascript
如何将JavaScript将数组转为树形结构
Jun 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下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
php按百分比生成缩略图的代码分享
2014/05/10 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
利用php获得flv视频长度的实例代码
2017/10/26 PHP
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
jQuery简单实现上下,左右滑动的方法
2016/06/01 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
es5 类与es6中class的区别小结
2020/11/09 Javascript
python中精确输出JSON浮点数的方法
2014/04/18 Python
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python while循环使用else语句代码实例
2020/02/07 Python
python自动下载图片的方法示例
2020/03/25 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
《湘夫人》教学反思
2014/02/21 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
化工专业求职信
2014/07/01 职场文书
四查四看整改措施
2014/09/19 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
学子宴致辞大全
2015/07/27 职场文书
教你怎么用Python生成九宫格照片
2021/05/20 Python