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

js代码:

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://blog.csdn.net/qq_30100043/article/details/80092012

原文地址:https://www.cnblogs.com/init-007/p/11309943.html