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

js代码:

var name = '测试中文';// 姓名
var nameRgexp = new RegExp("[a-zA-Z\u4e00-\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

posted @ 2019-08-06 16:32  study_php_java_C++  阅读(281)  评论(0编辑  收藏  举报