美文网首页程序员
关于RegExp.exec()不能返回首个匹配值的原因

关于RegExp.exec()不能返回首个匹配值的原因

作者: 之幸甘木 | 来源:发表于2020-05-29 23:24 被阅读0次

    有可能是你之前调用了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,慢慢排查吧。

    相关文章

      网友评论

        本文标题:关于RegExp.exec()不能返回首个匹配值的原因

        本文链接:https://www.haomeiwen.com/subject/atyqzhtx.html