let rule = /weixin/g;let data = 'weixin.js.sdk'if(!rule.test(data)){console.log('no valid');}let isValid = !rule.test(data);console.log(isValid);// false
这个问题实际上是/g导致的,因为/g代表全局匹配,所以判断正则时内部是有一个lastIndex来记录最后匹配的位置。当重复调用的时候,接着上次的lastIndex继续匹配,故而将导致判断出错。
