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

        看到一個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號
        主站蜘蛛池模板: 久草欧美精品在线观看| 久久久免费精品re6| 自拍偷在线精品自拍偷 | 国产成人精品免费午夜app | 国产成人综合久久精品尤物| 亚洲AV无码成人网站久久精品大| 国产精品 日韩欧美| 国产久热精品无码激情| 亚洲国产精品狼友中文久久久| 国产999精品久久久久久| 国产精品久久久久aaaa| 国精品无码一区二区三区左线| 最新精品露脸国产在线| 隔壁老王国产在线精品| 精品久久一区二区三区| 精品国产一区二区三区无码| 无码人妻精品一区二区三区久久久| 午夜三级国产精品理论三级| 久久久国产精品| 精品国产免费一区二区三区| 国产香蕉国产精品偷在线观看 | 亚洲AV永久无码精品成人| 欧美精品区一级片免费播放| 精品久久久久久无码中文野结衣| 国产精品爽爽ⅴa在线观看| 热久久国产精品| 精品视频一区二区三区在线观看| 国产AV午夜精品一区二区三区| 久久精品国产亚洲77777| 骚片AV蜜桃精品一区| 无码日韩精品一区二区免费暖暖 | 精品亚洲成AV人在线观看| 久久亚洲精品成人av无码网站| 亚洲av永久无码精品表情包| 日韩精品国产另类专区| 人妻精品久久无码专区精东影业| 欧洲精品99毛片免费高清观看| 日韩精品无码中文字幕一区二区| 亚洲综合无码精品一区二区三区| 亚洲精品视频久久久| 一本一道久久a久久精品综合|