浅谈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 相关文章推荐
TopList标签和JavaScript结合两例
Aug 12 Javascript
Jquery在指定DIV加载HTML示例代码
Feb 17 Javascript
最新最热最实用的15个jQuery插件汇总
Jul 05 Javascript
JavaScript正则表达式匹配 div  style标签
Mar 15 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
Jun 22 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
微信小程序-拍照或选择图片并上传文件
Jan 06 Javascript
详解Vue使用 vue-cli 搭建项目
Apr 20 Javascript
ES6中Array.find()和findIndex()函数的用法详解
Sep 16 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 Javascript
vue项目引入ts步骤(小结)
Oct 31 Javascript
JavaScript命令模式原理与用法实例详解
Mar 10 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
PHP中exec与system用法区别分析
2014/09/22 PHP
php实现有趣的人品测试程序实例
2015/06/08 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
改版了网上的一个js操作userdata
2007/04/27 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
node.js中的fs.readdir方法使用说明
2014/12/17 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
vue计算属性get和set用法示例
2019/02/08 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
基于JavaScript实现单例模式
2019/10/30 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
给Python入门者的一些编程建议
2015/06/15 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
python爬虫---requests库的用法详解
2020/09/28 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
澳大利亚儿童精品仓库:Goo & Co.
2019/06/20 全球购物
用友笔试题目
2016/10/25 面试题
展会邀请函范文
2014/01/26 职场文书
元旦寄语大全
2014/04/10 职场文书
培训师岗位职责
2015/02/14 职场文书
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技