为什么js正则test方法在某些情况下会暴露出bug?

2026-03-30 10:050阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计710个文字,预计阅读时间需要3分钟。

为什么js正则test方法在某些情况下会暴露出bug?

实际上我很少用这个,之前一直没注意到这个问题。自从落雪那篇写了一个变色的测试后,我才去看了一下。下面的代码都是我在Chrome的F12下调试的,大家可以研究一下。先看看东西吧。

其实我很少用这个,所以之前一直没注意这个问题,自从落叶那厮写了个变态的测试我才去看了下这东西

下面的代码都是在chrome的F12下调试的,大家可以研究一下

先来看个东西吧。

var re = /\d/; console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1") );

全部是 true 没问题。。

但是你把 /\d/; 改成 /\d/g; 再试试。

再次修改:

console.log( /\d/g.test("1") ); console.log( /\d/g.test("1") ); console.log( /\d/g.test("1") ); console.log( /\d/g.test("1") );

全部是 true,这究竟是为什么呢?

这些结果相当有意思,当然高手自然知道为什么,如果你知道的话,下面其实可以跳过不用看了,全是水文而已。。

正则里有一个 lastIndex 的属性,是下一次匹配的开始位置。

阅读全文

本文共计710个文字,预计阅读时间需要3分钟。

为什么js正则test方法在某些情况下会暴露出bug?

实际上我很少用这个,之前一直没注意到这个问题。自从落雪那篇写了一个变色的测试后,我才去看了一下。下面的代码都是我在Chrome的F12下调试的,大家可以研究一下。先看看东西吧。

其实我很少用这个,所以之前一直没注意这个问题,自从落叶那厮写了个变态的测试我才去看了下这东西

下面的代码都是在chrome的F12下调试的,大家可以研究一下

先来看个东西吧。

var re = /\d/; console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1") );

全部是 true 没问题。。

但是你把 /\d/; 改成 /\d/g; 再试试。

再次修改:

console.log( /\d/g.test("1") ); console.log( /\d/g.test("1") ); console.log( /\d/g.test("1") ); console.log( /\d/g.test("1") );

全部是 true,这究竟是为什么呢?

这些结果相当有意思,当然高手自然知道为什么,如果你知道的话,下面其实可以跳过不用看了,全是水文而已。。

正则里有一个 lastIndex 的属性,是下一次匹配的开始位置。

阅读全文