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

看到一個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號
久久亚洲精品国产精品婷婷| 国产精品99久久久久久人四虎| 麻豆精品国产免费观看 | 91精品国产免费| 精品福利一区二区三区免费视频| 国产精品1024香蕉在线观看| 91情侣在线精品国产免费| 国产成人亚洲精品蜜芽影院| 日韩一区二区三区在线精品| 亚洲精品成人a在线观看| 亚洲精品高清无码视频| 亚洲精品二三区伊人久久| 国产精品嫩草影院永久一| 国产精品免费αv视频| 久久久999久久久精品| 99久久婷婷国产综合精品| 精品日韩亚洲AV无码一区二区三区 | 国产精品美女网站| 久久国产精品免费观看| 日韩精品无码久久久久久| 久久乐国产综合亚洲精品| 久久免费观看国产精品| 国产成人精品免费大全| 国产成人精品免费直播| 99久久综合国产精品免费| 香蕉视频在线精品| 久久精品国产久精国产思思| 九九99久久精品国产| 国产精品日韩专区| 亚洲国语精品自产拍在线观看| 99久久国产综合精品五月天| 国产精品jizz在线观看免费| 国产午夜精品理论片久久| 欧美日韩精品一区二区在线视频| 日韩高清免费观看| 性欧洲精品videos| 国产亚洲日韩在线a不卡| 国产四虎免费精品视频| 国产精品一区三区| 精品久久洲久久久久护士免费| 麻豆精品在线观看|