javascript 正则表达式 test方法执行多次,返回的结果不一致是怎么回事,如何解决?

我要冲啦个人网站建设2024-04-11web前端

eg.

let regex = /^[0-9a-zA-Z]*$/gm;

regex.test('abc1123');

// 结果为:第一次返回true , 第二次调用返回false

出现的原因:

第一次调用的时候,是从第0位开始匹配,第二次调用是接着上一次匹配的结束位置开始查找。
 

解决方法:

方法1:每次调用的时候,都将匹配的位置置为0

let regex = /^[0-9a-zA-Z]*$/gm;

regex.lastIndex = 0;

regex.test('abc1123');

方法2:不是必须使用全局匹配模式(g)时,将g去掉就可以了

let regex = /^[0-9a-zA-Z]*$/m;

regex.test('abc1123');

文章关键词