JavaScript正则表达式test与exec方法的g标志陷阱

作者:半夏

时间:2026-10-28

浏览:630

本文探讨了JavaScript中正则表达式test()与exec()方法的差异。重点分析了当RegExp对象使用g标志时,exec()方法会维护 lastIndex 属性。若前一次测试成功,再次调用exec()可能因索引偏移返回null。这是由正则对象的内部状态机制导致的,而非匹配失败。

文章目录

正则表达式test与exec的基本区别

在JavaScript中,对字符串进行正则匹配通常涉及test()和exec()两种方法。两者的主要区别在于返回值:test()返回布尔值,表示是否匹配;而exec()返回一个包含匹配内容的数组(若无匹配则返回null)。然而,在实际使用中,可能会遇到一些令人困惑的现象,即便代码逻辑看似简单,其背后的机制却容易引发误解。

代码如下:

g标志下的exec方法陷阱var pattern=new RegExp("match","ig");
alert(pattern.test("Match"));
alert(pattern.exec("Match"));

第一个alert()的值在预料之中为true

正则表达式test与exec的基本区别

但是第二个测试值却出人意料的为null

正则表达式test与exec的基本区别

关于这个问题我不知道是什么原理,因为我没看到函数源码,如果有朋友能够指出感激不尽!!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章