浅谈regExp的test方法取得的值变化的原因及处理方法

 更新时间:2017年03月01日 09:23:17   投稿:jingxian  
下面小编就为大家带来一篇浅谈regExp的test方法取得的值变化的原因及处理方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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方法取得的值变化的原因及处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈如何循序渐进的学好JS

    浅谈如何循序渐进的学好JS

    如何才能学好JS?在这里给大家总结一些学习Js的经验,希望能对你们有所帮助。
    2021-05-05
  • 原生JS实现飞机大战小游戏

    原生JS实现飞机大战小游戏

    这篇文章主要为大家详细介绍了原生JS实现飞机大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • javascript常用函数归纳整理

    javascript常用函数归纳整理

    这篇文章主要介绍了javascript常用函数,归纳整理了一些常用的函数便于大家查询参考,需要的朋友可以参考下
    2014-10-10
  • js中arguments对象的深入理解

    js中arguments对象的深入理解

    这篇文章主要给大家介绍了关于js中arguments对象的深入理解,文中通过示例代码介绍的非常详细,对大家学习或者使用javascript具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • JS中页面列表加载的常用方法总结

    JS中页面列表加载的常用方法总结

    在日常前端开发过程中,常用到页面列表加载。这篇文章主要为大家介绍三种常用方法,分别是分页加载、按钮加载以及滚动加载,需要的可以参考一下
    2022-09-09
  • echarts饼图labelLine线的长度自适应设置

    echarts饼图labelLine线的长度自适应设置

    这篇文章主要给大家介绍了关于echarts饼图labelLine线的长度自适应设置的相关资料,在echarts中,饼图的标签线可以通过设置 labelLine属性来自定义位置,需要的朋友可以参考下
    2023-08-08
  • JavaScript中V8引擎的垃圾回收机制详解

    JavaScript中V8引擎的垃圾回收机制详解

    V8是Google开发的JavaScript引擎,采用分代垃圾回收机制自动管理内存,包括新生代和老生代,新生代使用Scavenge算法快速回收短生命周期对象,老生代使用标记-清除和标记-整理算法优化长期存活对象的回收,V8通过增量标记、并发GC和增量压缩等优化策略减少垃圾回收对性能的影响
    2025-02-02
  • JS获取URL中参数值(QueryString)的4种方法分享

    JS获取URL中参数值(QueryString)的4种方法分享

    今天碰到要在一个页面获取另外一个页面url传过来的参数,一开始很本能的想到了用 split("?")这样一步步的分解出需要的参数。后来想了一下,肯定会有更加简单的方法的!所以在网上找到了几个很又简单实用的方法,mark下。
    2014-04-04
  • javascript父子页面通讯实例详解

    javascript父子页面通讯实例详解

    这篇文章主要介绍了javascript父子页面通讯的实现方法,实例分析了javascript针对父子页面通讯的原理与相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 微信小程序实现锚点跳转

    微信小程序实现锚点跳转

    这篇文章主要为大家详细介绍了微信小程序实现锚点跳转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11

最新评论