浅谈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的表头固定的若干方法
Jan 27 Javascript
window.open的页面如何刷新(父页面)上层页面
Dec 28 Javascript
js实现图片轮换效果代码
Apr 16 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
Jan 06 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
jQuery html表格排序插件tablesorter使用方法详解
Feb 10 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 Javascript
VUE重点问题总结
Mar 19 Javascript
微信小程序实现的绘制table表格功能示例
Apr 26 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 Javascript
vue实现图书管理系统
Dec 29 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
给初学PHP的5个入手程序
2006/11/23 PHP
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
PHP中new static() 和 new self() 的区别介绍
2015/01/09 PHP
javascript中的this详解
2014/12/08 Javascript
jQuery+css实现百度百科的页面导航效果
2014/12/16 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
详解vue数组遍历方法forEach和map的原理解析和实际应用
2018/11/15 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
Vue仿Bibibili首页的问题
2021/01/21 Vue.js
Python pandas常用函数详解
2018/02/07 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
python3多线程知识点总结
2019/09/26 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
python 制作简单的音乐播放器
2020/11/25 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
优秀共产党员先进事迹
2014/01/27 职场文书
土地转让协议书范本
2014/04/15 职场文书
法律专业自荐信
2014/06/03 职场文书
大学生赌博检讨书
2014/09/22 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
工地材料员岗位职责
2015/04/11 职场文书
抢劫罪辩护词
2015/05/21 职场文书
2016年教师新年寄语
2015/08/18 职场文书
js中Object.create实例用法详解
2021/10/05 Javascript
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技