js相同的正则多次调用test()返回的值却不同的问题

var name = '测试中文';// 姓名
var nameRgexp = new RegExp("[a-zA-Zu4e00-u9fa5]{2,}","g");

console.log(nameRgexp.test(name)); // true

var company = '测试中文';// 和name一样的值
console.log(nameRgexp.test(company)); // false

问题原因:

这是因为正则regg属性,设置的全局匹配。RegExp有一个lastIndex属性,来保存索引开始位置。 
上面的问题,第一次调用的lastIndex值为0,到了第二次调用就不是0了

解决方案

    • 第一种方案是将g去掉,关闭全局匹配。
    • 第二种就是在每次匹配之前将lastIndex的值设置为0。
原文地址:https://www.cnblogs.com/LeoXnote/p/13555894.html