题目描述
本来要用正则匹配中文,但是在定义之后,调用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环境下测试过
MDN链接