浅谈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 $.ajax入门应用二
Nov 19 Javascript
jQuery中filter(),not(),split()使用方法
Jul 06 Javascript
使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码
Dec 30 Javascript
js快速排序的实现代码
Dec 08 Javascript
详解Vue 事件修饰符capture 的使用
Dec 29 Javascript
详解vue-cli 脚手架 安装
Apr 16 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
详解关于表格合并span-method方法的补充(表格数据由后台动态返回)
May 21 Javascript
小程序多图列表实现性能优化的方法步骤
May 28 Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 Javascript
React中使用UMEditor的方法示例
Dec 27 Javascript
学前端,css与javascript重难点浅析
Jun 11 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中的escape函数
2013/06/29 PHP
浅析linux下apache服务器的配置和管理
2013/08/10 PHP
php顺序查找和二分查找示例
2014/03/27 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
2017/07/12 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
举例讲解Python中的算数运算符的用法
2015/05/13 Python
python 全局变量的import机制介绍
2017/09/07 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
numpy.random模块用法总结
2019/05/27 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
Python实现队列的方法示例小结【数组,链表】
2020/02/22 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
个人对照检查材料
2014/02/12 职场文书
城管综合整治方案
2014/05/01 职场文书
2016银行招聘自荐信
2016/01/28 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
详解MySQL主从复制及读写分离
2021/05/07 MySQL