浅谈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触发器详解
Mar 10 Javascript
很可爱的输入框
Aug 03 Javascript
jquery $.ajax入门应用二
Nov 19 Javascript
JavaScript中的null和undefined解析
Apr 14 Javascript
javascript闭包入门示例
Apr 30 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
Nov 26 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
jquery获取form表单input元素值的简单实例
May 30 Javascript
jQuery实现简易的输入框字数计数功能示例
Jan 16 Javascript
javascript实现Java中的Map对象功能的实例详解
Aug 21 Javascript
Angular实现预加载延迟模块的示例
Oct 12 Javascript
JS数组进阶示例【数组的几种函数用法】
Jan 16 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
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
Gird事件机制初级读本
2007/03/10 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
2009/12/10 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jquery easyui使用心得
2014/07/07 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
python 文件与目录操作
2008/12/24 Python
Python常用列表数据结构小结
2014/08/06 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
python tkinter基本属性详解
2019/09/16 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
html5唤醒APP小记
2019/03/27 HTML / CSS
商务英语求职自荐信范文
2013/12/24 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
党的生日活动方案
2014/08/15 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
领导欢迎词范文
2015/01/26 职场文书
地震捐款简报
2015/07/21 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
python中opencv实现图片文本倾斜校正
2021/06/11 Python