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

看到一個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號
WWW国产精品内射熟女| 91精品国产高清久久久久久国产嫩草| 日韩一区二区三区无码影院| 99er热精品视频| 精品久久久久久蜜臂a∨| 无码精品国产一区二区三区免费| 97久久综合精品久久久综合| 国产精品国产三级国产| 精品中文字幕一区二区三区四区| 日韩毛片在线免费观看| 国产精品乱子乱XXXX| 精品国产三级a∨在线观看| 精品国产性色无码AV网站| 99久久国产亚洲综合精品| 久久人人做人人玩人精品| 91精品国产自产在线观看永久∴ | 3d动漫精品成人一区二区三| 亚洲高清专区日韩精品 | 97精品国产91久久久久久| 国产精品色视频ⅹxxx| 一级A毛片免费观看久久精品| 日韩久久精品一区二区三区| 日韩在线免费看网站| 亚洲欧美国产日韩av野草社区| 日韩精品久久久久久久电影蜜臀| 亚洲日韩在线观看免费视频| 久久久无码精品亚洲日韩蜜桃| 亚洲日韩激情无码一区| 亚洲中文字幕无码日韩| 日韩电影免费在线观看中文字幕| 亚洲av日韩av不卡在线观看| 久久久无码精品亚洲日韩京东传媒| 日韩亚洲精品福利| 日韩亚洲国产综合高清| 亚洲日韩国产欧美一区二区三区| 亚洲an日韩专区在线| 日韩毛片高清在线看| 国产成人精品午夜福麻豆| 国产精品热久久毛片| 国产在线精品一区二区不卡麻豆| 一本一本久久A久久综合精品|