当前位置:  编程技术>其它

看到一个JS正则的题

    来源: 互联网  发布时间:2014-10-13

    本文导语:  贴出来与大家共勉。 先看一段代码, var objReg = /^[a-zA-Z]{1}(:){1}$/gi; alert(objReg.test("a:"));//返回true alert(objReg.test("a:"));//返回false 为什么第二个test会返回false?是不是觉得奇怪。 原因我解答如下: test实际上与exec方法的执行方...

贴出来与大家共勉。

先看一段代码,

var objReg = /^[a-zA-Z]{1}(:){1}$/gi;
alert(objReg.test("a:"));//返回true
alert(objReg.test("a:"));//返回false


为什么第二个test会返回false?是不是觉得奇怪。
原因我解答如下:
test实际上与exec方法的执行方法是一致的,只是返回值不一样。test返回的是true or false(如果exec返回的不是null),exec返回的是pattern(匹配)。
而exec的执行过程为:带有g参数时,下次匹配时,自动会跳到lastIndex后的位置,也就是这里的第2个位置。而这个位置与pattern显然不匹配。因此返回false。

解决方法:
(1)
可以不使用g(全局参数)也就是这样-

var objReg = /^[a-zA-Z]{1}(:){1}$/i;
alert(objReg.test("a:"));//返回true
alert(objReg.test("a:"));//返回true


(2)
可以用lastIndex=0来还原-
var objReg = /^[a-zA-Z]{1}(:){1}$/gi;
alert(objReg.test("a:"));//返回true
objReg.lastIndex=0;
alert(objReg.test("a:"));//返回true

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我看到大家都在讨论分数的问题,我如何看到自己的分数呢?
  • 为什么我的Redhat9在窗口模式下可以看到汉字,在命令行模式下就看到乱码?
  • 用浏览器看applet,总是只能看到修改前的applet,关了浏览器,再开,还是只能看到修改前的,难道真的要重启机子?太夸张了
  • 奇怪,CSDN的贴子,提问部分我最多能看到第4行??!!
  • cygwin的ssh中无法看到网络盘
  • 怎么看到自己发过言的帖子?
  • 怎样看到.jar文件的源代码
  • 刚装上linux,我怎样才能看到windows(FAT32)下的文件?
  • 关于bash shell: 用set命令可以看到的信息都储存在哪?
  • windows访问linux ftp却无法看到相关内容
  • ftp 登录,无法看到相关内容。
  • 什么网站可以看到Linux曾经出现过的所有BUG?
  • 请问安装ubuntu的硬盘,如果被拆走的话,是否能看到硬盘上的文件?
  • 在哪里可以看到打印信息??
  • 请问怎样才能看到JavaScript原来的脚本语言?
  • 一个巨大的悲哀啊!看到一篇好文章,结果IE出错了
  • (新手)这里怎么看到300篇以外的所有文章?(不是搜索)
  • 请教一个简单问题,什么命令可以看到目录下的所有用ln建立的联接??谢谢
  • 安装Redhat选者简体中文,执行Xconfigurator,屏幕上看到乱码,如何解决?
  • 请问在red hat8.0下 怎么看到 别的分驱的文件


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3