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继续匹配,故而将导致判断出错。