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环境下测试过

阅读 2.3k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进