发布于 2017-03-06 12:47:04 | 150 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的Javascript教程,程序狗速度看过来!

JavaScript客户端脚本语言

Javascript 是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如Perl,遗留的速度问题,为客户提供更流畅的浏览效果。


这篇文章主要介绍了JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案的相关资料,需要的朋友可以参考下

一个简单的利用正则判断输入是否为数字:


input1 = '0281234567';input2 = '0282345678';var reg = /^\d+$/g;
reg.test(input1); //true
reg.test(input2); //false 

发现第二次test的时候返回的值不对了.排除书写错误,取值失败等等各种干扰因素后,发现仅仅是reg正则第二次执行的时候就无法正确执行了.之前并未遇到过这个问题,便搜索了一下相关信息.

原来这个问题实际上是/g导致的,而此时也才发现,实际上这个正则我误用了一个/g.因为/g代表全局匹配,所以判断正则时内部是有一个lastIndex来记录最后匹配的位置.当重复调用的时候,会接着上次的lastIndex继续匹配,故而将导致判断出错.明白了原理解决起来也就很明了了:

1.去掉/g,在不需要/g的情况下不要随意添加/g标识

2.第二次匹配前,手动将lastIndex置0,以上面的例子来说:reg.lastIndex()=0即可.

以上所述是小编给大家介绍的JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对phperz网站的支持!



相关阅读 :
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
IE中getElementsByName()对有些元素无效的解决方案
可以用来调试JavaScript错误的解决方案
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
使用JavaScript脚本无法直接改变Asp.net中Checkbox控件的Enable属性的解决方法
JavaScript中的单引号和双引号报错的解决方法
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
javascript中onmouse事件在div中失效问题的解决方法
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
才发现的超链接js导致网页中GIF动画停止的解决方法
使用nodejs中httpProxy代理时候出现404异常的解决方法
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务