专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » js正则表达式:看到一个JS正则的题 »正文

js正则表达式:看到一个JS正则的题

来源: 发布时间:星期日, 2009年9月6日 浏览:2次 评论:0
贴出来和大家共勉
先看段代码
<script>
var objReg = /^[a-zA-Z]{1}(:){1}$/gi;
alert(objReg.test("a:"));//返回true
alert(objReg.test("a:"));//返回false
</script>
为什么第 2个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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: