站長資訊網
        最全最豐富的資訊網站

        看到一個JS正則的題

        貼出來與大家共勉。

        先看一段代碼,
        <script>
        var objReg = /^[a-zA-Z]{1}(:){1}$/gi;
        alert(objReg.test(“a:”));//返回true
        alert(objReg.test(“a:”));//返回false
        </script>

        為什么第二個test會返回false?是不是覺得奇怪。
        原因我解答如下:
        test實際上與exec方法的執行方法是一致的,只是返回值不一樣。test返回的是true or false(如果exec返回的不是null),exec返回的是pattern(匹配)。
        而exec的執行過程為:帶有g參數時,下次匹配時,自動會跳到lastIndex后的位置,也就是這里的第2個位置。而這個位置與pattern顯然不匹配。因此返回false。

        解決方法:
        (1)
        可以不使用g(全局參數)也就是這樣-
        <script>
        var objReg = /^[a-zA-Z]{1}(:){1}$/i;
        alert(objReg.test(“a:”));//返回true
        alert(objReg.test(“a:”));//返回true
        </script>

        (2)
        可以用lastIndex=0來還原-
        var objReg = /^[a-zA-Z]{1}(:){1}$/gi;
        alert(objReg.test(“a:”));//返回true
        objReg.lastIndex=0;
        alert(objReg.test(“a:”));//返回true

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国内精品在线视频| 国产精品午夜国产小视频| 在线亚洲精品自拍| 久久精品国产精品国产精品污| 精品国产免费一区二区三区| 日韩精品无码一区二区三区免费| 亚洲精品无码专区久久久| 国产精品久久毛片完整版| 午夜成人精品福利网站在线观看 | 精品午夜福利1000在线观看| 91麻豆国产福利精品 | 全球AV集中精品导航福利| 成人精品一区二区三区| 国产精品乱码高清在线观看| 亚洲av午夜成人片精品电影| 国内精品久久久久久久涩爱| 精品国产福利第一区二区三区| 精品国产一区二区三区在线观看 | 2021最新国产精品一区| 精品综合久久久久久888蜜芽| 99re只有精品8中文| 极品精品国产超清自在线观看| 国产精品成人观看视频网站| 精品视频一区二区三区免费| 久久亚洲私人国产精品| 中国精品18videosex性中国| 日本精品一区二区久久久| 国产综合色产在线精品| 中文字幕成人精品久久不卡| 国产精品亚洲片在线va| 国产亚洲综合成人91精品| 国产精品无码一区二区三级| 久久国产乱子伦免费精品| 久久久久亚洲精品无码蜜桃| 日韩精品一区二区三区中文 | 日韩精品在线看| 精品无人区麻豆乱码1区2区| 99re6在线精品免费观看| 97国产精品视频| 动漫精品专区一区二区三区不卡| 国产午夜亚洲精品理论片不卡 |