国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > regex > 正文

看到一個(gè)JS正則的題

2020-01-20 22:28:04
字體:
供稿:網(wǎng)友
貼出來與大家共勉。

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

為什么第二個(gè)test會(huì)返回false?是不是覺得奇怪。
原因我解答如下:
test實(shí)際上與exec方法的執(zhí)行方法是一致的,只是返回值不一樣。test返回的是true or false(如果exec返回的不是null),exec返回的是pattern(匹配)。
而exec的執(zhí)行過程為:帶有g(shù)參數(shù)時(shí),下次匹配時(shí),自動(dòng)會(huì)跳到lastIndex后的位置,也就是這里的第2個(gè)位置。而這個(gè)位置與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
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中阳县| 五华县| 龙山县| 台中市| 梨树县| 德昌县| 定边县| 德昌县| 广水市| 阿瓦提县| 芦山县| 洛南县| 肥西县| 尼木县| 漯河市| 荣成市| 扶沟县| 沂南县| 澄城县| 尼木县| 兴和县| 承德市| 遵义县| 英超| 淅川县| 凤山市| 满城县| 龙岩市| 蕲春县| 津南区| 河曲县| 佳木斯市| 郧西县| 孙吴县| 宜黄县| 驻马店市| 新乐市| 方城县| 贵州省| 泽普县| 临漳县|