JS正则为什么exec会返回null, 先输出test都返回true了,而exec为null?原因如下:
如果正则表达式设置了全局标志,
test()
的执行会改变正则表达式lastIndex
属性。连续的执行test()
方法,后续的执行将会从 lastIndex 处开始匹配字符串,(同样改变正则本身的
exec()
lastIndex属性值
).
所以,如果代码执行test()查询了一次,然后执行exec就是第二次查询了,这时候lastIndex已经改变所以没有查询结果,所以返回null。
所以,一般不要把test()和exec()联用,如果出于测试目的,那么测试后要把test()删掉!