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

mac2022-06-30  30

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

问题原因:

这是因为正则reg的g属性,设置的全局匹配。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

最新回复(0)