JS正则表达式 ,reg.test()时,慎重全局查找/.../g属性
来源:互联网 发布:解压缩工具 for mac 编辑:程序博客网 时间:2024/06/05 04:22
正则表达式 ,test()慎重全局查找/…/g属性
先看下最开始的代码
eg:var reg = /\./g;var balance = '100';reg.test(balance) ? balance : balance += '.00';
是因为在接收到后台数据,由于第一次,再测试数据中,后台给的全是整数,所以我加g进行判断,全部正确,并没有发现错误;
eg:var reg = /\./g;var balance = '0.2';reg.test(balance) ? balance : balance += '.00';
第二次后台给的数据,是包含小数的,错误就出现了
结果显示的是
0.2
0.2.00
........//循环上面两次结果
原因就是因为reg=/\./g
正则表达式里加入了g全局查找。
具体原因论坛里有人已经分析过了,我就不详细说明了,贴上别人的连接[http://blog.csdn.net/leolu007/article/details/8576490)]
但是,我想就我这次错误总结一下我的理解,希望我的理解能帮助到你。
加上全局g.会导致下一次的判断,会根据上一次的位置查找,不论reg.test() 括号里内容是否变化,
例如:
var reg=/\./greg.test(0.2)//truereg.test(0.2)//false,因为接着上一次的index位置查找,没找到正则中的内容,所以是false,false以后,index会自动归0reg.test(0.2)//truereg.test(123.4)//false 注意,此时已经换了验证内容,但依然会是false
写到这里,不知道各位有没有点想法,这是我发现论坛里有没写到的地方,可能也许是还没找到写过人的帖子。。。。。
就是验证内容不管相同不相同,结果都是一次true,一次false
所以我想到了reg加g全局验证下,记录的index位置,是根据正则规则来定的,举个例子说明
var reg=/\./g;var ret=/\./g;reg.test(0.2)//trueret.test(0.2)//true;
所以,加g全局判断下,index的记录位置,是根据正则表达式来定的,不同表达式,初始位置都是0,即使验证同一段信息,不同正则表达式,再全局属性下,第一次验证结果也都是true。
发现了没有,所以index是和正则表达式规则息息相关的,和验证内容是没关系的。
当然,用同一正则表达式判断不同内容,还是要慎用g。我只是把自己理解到的,论坛里可能没人提到的写下来,对我自己也是个提醒。希望可以帮助大家。
- JS正则表达式 ,reg.test()时,慎重全局查找/.../g属性
- 正则表达式有无g参数(全局搜索)时,test()结果的差异
- JS正则表达式全局标记g的解释
- 正则表达式test(),慎用g
- PHP REG正则表达式
- 正则表达式reg
- javascript正则全局匹配g慎用test方法
- js正则表达式 match exec test,以及g模式的一些知识点
- 关于JS正则表达式中g模式下test出现true/false交替的个人见解
- js 正则表达式之test函数讲解
- js 正则表达式之test函数讲解
- JS正则表达式-test()方法的使用
- js正则表达式test方法的问题
- Javascript中正则表达式的全局匹配模式 /g
- /********/ 代表正则表达式内容 g代表全局替换
- JavaScript 正则表达式对象RegExp test方法慎用/g
- test-reg
- 正则表达式简要(Reg Expression)
- Runtime 运行时的方法交换
- Java 单循环打印九九乘法表
- 【错误解决】有关发送邮件带附件的错误
- The Little Girl who Picks Mushrooms
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher J (kmp扩展)
- JS正则表达式 ,reg.test()时,慎重全局查找/.../g属性
- 关于property文件的使用
- 【安全牛学习笔记】SMB扫描
- 原型模式
- 动态控制控件大小
- linux 安装 ffmpeg
- Ros Install---Ubuntu14.04
- 以太坊平台开源项目
- 国内TOP5数字化服务商中企动力舞动“管家服务”