JS正则表达式多次调用test方法匹配问题

题目描述

本来要用正则匹配中文,但是在定义之后,调用test方法进行判断时,会出现意料之外的结果。
比如我这样const Hanzi = /^[\u2E80-\u9FFF]+$/定义好Hanzi,然后多次调用,如Hanzi.test('汉字')Hanzi.test('我是汉字'),就会出现返回false的情况。
后面试了试其它的,发现也有这种问题。

相关代码

const reg = /[a-z]/g
reg.test(123) // false

reg.test('123') // false

reg.test('aaa') // true

reg.test('bbb')  // true

reg.test('cc')  // false

reg.test('dd')  // true

reg.test('ee')  // true

reg.test('ff')  // false

但是使用新的表达式调用,就没有问题。
/[a-z]/g.test('aaa')
/[a-z]/g.test('aaa')
/[a-z]/g.test('aaa')
/[a-z]/g.test('aaa')
/[a-z]/g.test('aaa')

请问有没有人可以解惑一下,什么原因出现这种情况。。
ps: 在chrome浏览器和nodejs环境下测试过

阅读 153
评论 更新于 2019-12-02
    1 个回答
    luozz
    • 5.6k
    评论 赞赏 2019-12-02
      撰写回答

      登录后参与交流、获取后续更新提醒