浅谈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 相关文章推荐
javascript Demo模态窗口
Dec 06 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
基于javascript实现图片左右切换效果
Jan 25 Javascript
分享我对JS插件开发的一些感想和心得
Feb 04 Javascript
jQuery获取当前点击的对象元素(实现代码)
May 19 Javascript
将List对象列表转换成JSON格式的类实现方法
Jul 04 Javascript
JS克隆,属性,数组,对象,函数实例分析
Nov 26 Javascript
js oncontextmenu事件使用详解
Mar 25 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
JavaScript瀑布流布局实现代码
May 06 Javascript
移动端效果之IndexList详解
Oct 20 Javascript
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
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实现Ftp用户的在线管理
2012/02/16 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
基于PHP制作验证码
2016/10/12 PHP
实例讲解PHP页面静态化
2018/02/05 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
javascript 实现map集合
2015/04/03 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
详解python编译器和解释器的区别
2019/06/24 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
python os.rename实例用法详解
2020/12/06 Python
一套.net面试题及答案
2016/11/02 面试题
文秘专业自荐信
2013/10/14 职场文书
节约电力资源的建议书
2014/03/12 职场文书
经营理念口号
2014/06/21 职场文书
教师调动申请报告
2015/05/18 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏
Win11快速关闭所有广告推荐
2022/04/19 数码科技