详谈lastIndex对正则结果的影响

 更新时间:2017年11月10日 08:48:58   投稿:jingxian  
下面小编就为大家带来一篇详谈lastIndex对正则结果的影响。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

前言

今天遇到一个问题,用正则表达式去检查同一个字符串时,交替返回true和false。无奈之下,重新翻了翻权威指南,发现罪魁祸首原来是lastIndex。可在控制台尝试下

let reg = /[\d]/g
//undefined
reg.test(1)
//true
reg.test(1)
//false

lastIndex

lastIndex在权威指南中是如下解释:它是一个可读/写的整数。如果匹配模式带有g修饰符,这个属性存储在整个字符串中下次索引的开始位置,这个属性会被exec()和test()用到。还是上面的例子,观察下lastIndex属性

let reg = /[\d]/g  //有修饰符g
//undefined
reg.lastIndex
//0
reg.test(1)   
//true
reg.lastIndex  //匹配一次后,lastIndex改变
//1
reg.test(1)  //从index 1 开始匹配
//false
reg.lastIndex
//0
reg.test(1)
//true
reg.lastIndex
//1

第一次使用test()匹配成功后,lastIndex被设为匹配到的结束位置,就是1;第二次再test()时,从index 1 开始匹配,匹配失败,lastIndex重置为0 。这样就造成了匹配结果与预期不符

解决

1、不使用 g 修饰符

reg = /[\d]/
///[\d]/
reg.test(1)
//true
reg.test(1)
//true
reg.lastIndex
//0
reg.test(1)
//true
reg.lastIndex

2、test()之后手动设置lastIndex = 0

以上这篇详谈lastIndex对正则结果的影响就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 比较常用的几个正则表达式匹配数字(收藏)

    比较常用的几个正则表达式匹配数字(收藏)

    正则表达式用于字符串处理、表单验证等场合,实用高效。今天小编给大家分享比较常用的几个正则表达式匹配数字,需要的朋友参考下
    2017-03-03
  • 利用正则表达式校验金额最多保留两位小数实例代码

    利用正则表达式校验金额最多保留两位小数实例代码

    很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求,下面这篇文章主要给大家介绍了关于利用正则表达式校验金额最多保留两位小数的相关资料,需要的朋友可以参考下
    2022-08-08
  • 正则文法与正则表达式的相互转化问题(编译原理)

    正则文法与正则表达式的相互转化问题(编译原理)

    这篇文章主要介绍了正则文法与正则表达式的相互转化问题(编译原理), 除了正则文法外,正则表达式也可以相应的用来描述单词,正则文法和正则表达式的能力相同,且可以互相转化,本文给大家介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 基于Python正则表达式提取搜索结果中的站点地址

    基于Python正则表达式提取搜索结果中的站点地址

    正则表达式对于Python来说并不是独有的,最近在鼓捣一个东西把google搜索的结果中所有的站点地址导出,于是想到用python正则表达式提取搜索结果中的站点地址,小编把具体实现思路整理分享给大家
    2015-10-10
  • 正则表达式对qq号码校验

    正则表达式对qq号码校验

    这篇文章主要介绍了正则表达式对qq号码进行校验的相关知识,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-06-06
  • .NET正则基础之正则委托

    .NET正则基础之正则委托

    一般的正则替换,只能对匹配的子串做简单的处理,.NET的Replace()方法中的replacement参数,不仅可以是字符串,还可以是委托(delegate),在每次匹配成功时,都会调用委托方法,对匹配的子串进行处理之后,再作为替换文本返回
    2023-05-05
  • PHP正则匹配图片并给图片加链接详解

    PHP正则匹配图片并给图片加链接详解

    给文章中的图片添加下一页链接或点击打开原图链接
    2009-08-08
  • 浅谈Linux grep与正则表达式

    浅谈Linux grep与正则表达式

    grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。下面通过本文给大家分享Linux grep与正则表达式的相关知识,感兴趣的朋友一起看看吧
    2017-07-07
  • 详解正则表达式后面不要包含指定的字符串内容

    详解正则表达式后面不要包含指定的字符串内容

    这篇文章主要介绍了正则表达式后面不要包含指定的字符串内容的相关知识,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • 正则表达式基本语法详解

    正则表达式基本语法详解

    本文给给大家介绍正则表达式的基本语法,需要的朋友可以参考下
    2015-10-10

最新评论