佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 看到一個JS正則的題

看到一個JS正則的題

熱門標(biāo)簽:電子圍欄 銀行業(yè)務(wù) 阿里云 科大訊飛語音識別系統(tǒng) 服務(wù)器配置 團(tuán)購網(wǎng)站 Linux服務(wù)器 Mysql連接數(shù)設(shè)置
貼出來與大家共勉。

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

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

解決方法:
(1)
可以不使用g(全局參數(shù))也就是這樣-
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

標(biāo)簽:大理 棗莊 廣元 衢州 江蘇 萍鄉(xiāng) 蚌埠 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《看到一個JS正則的題》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    湖南省| 泾源县| 宁波市| 竹溪县| 黄冈市| 龙川县| 天台县| 永年县| 绥江县| 新泰市| 自治县| 新密市| 交口县| 常宁市| 凌源市| 林周县| 尚义县| 汝南县| 新和县| 沙河市| 柳河县| 镶黄旗| 哈尔滨市| 樟树市| 张家港市| 绍兴市| 新巴尔虎右旗| 宜阳县| 黑河市| 白河县| 柘城县| 庆元县| 板桥市| 洪江市| 永清县| 蕉岭县| 永登县| 新乡县| 日喀则市| 阜平县| 新民市|