有可能是你之前调用了RegExp.test()函数,导致第一个匹配值被占用了,后面的exec()函数直接从第二个匹配值开始检索,就是这样子。所以不要让这俩同时出现(一般也不会有这种需求)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
//匹配以“小”字开头的所有二字词
var msg="小[\u4e00-\u9fa5]";
var reg=new RegExp(msg,"g");
var str="老师:请用小红 我的 朋友造句。小黑:小红是我的朋友。小明:朋友!小红是我的!";
//test()会“占用”掉第一个结果
var bool=reg.test(str);
do{
var arr=reg.exec(str);
if(arr!=null){
console.log(arr);
}
}while(arr!=null);
</script>
</head>
<body>
</body>
</html>
运行结果如下,可以看到第一个“小红”并没有被匹配
第一个匹配值没有显示
注释test()函数调用
//var bool=reg.test(str);
这回齐全了
如果这未能解决你的问题,emmm,good luck,慢慢排查吧。
网友评论