关于正则校验前后不一致问题
自己做项目的时候遇到了一个神奇的事,就是遇到了校验前后不一致的。当时找了挺久后面发现是new RegExp()这个家伙的g属性,设置的全局匹配。RegExp有一个lastIndex属性,来保存索引开始位置。
上面的问题,第一次调用的lastIndex值为0,到了第二次调用就不是0了所以导致了不一样的校验结果
解决方案:
1. const reg = new RegExp(); reg.space.lastIndex = 0
2. 不引用正则,而是直接写出校验(/\s+/g).test(str)
3. 去除g这个校验字符
建议使用1>2>3