浅谈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 相关文章推荐
新发现一个骗链接的方法(js读取cookies)
Jan 11 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
jQuery中:selected选择器用法实例
Jan 04 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
简单谈谈javascript中的变量、作用域和内存问题
Aug 30 Javascript
smartcrop.js智能图片裁剪库
Oct 14 Javascript
使用bootstrap3开发响应式网站
May 12 Javascript
Jquery获取radio选中的值
May 05 jQuery
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
如何使用原生Js实现随机点名详解
Jan 06 Javascript
JavaScript WeakMap使用详解
Feb 05 Javascript
如何用vue实现网页截图你知道吗
Nov 17 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运行时强制显示出错信息的代码
2011/04/20 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
Dom在ajax技术中的作用说明
2010/10/25 Javascript
js中onload与onunload的使用示例
2013/08/25 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
JavaScript中校验银行卡号的实现代码
2016/12/19 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
Vue 实现把表单form数据 转化成json格式的数据
2019/10/29 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
js实现文章目录索引导航(table of content)
2020/05/10 Javascript
[06:30]DOTA2英雄梦之声_第15期_死亡先知
2014/06/21 DOTA
python解析xml文件实例分享
2013/12/04 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
keras模型可视化,层可视化及kernel可视化实例
2020/01/24 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python简单的三元一次方程求解实例
2020/04/02 Python
Python实现PS滤镜中的USM锐化效果
2020/12/04 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
我们的节日清明节活动方案
2014/03/05 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
社区矫正工作方案
2014/06/04 职场文书
医学生求职自荐书
2014/06/12 职场文书
出国签证在职证明范本
2014/11/24 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
Golang中异常处理机制详解
2021/06/08 Golang
详解Flask开发技巧之异常处理
2021/06/15 Python
Python图像处理库PIL详细使用说明
2022/04/06 Python