JS正则表达式 ,reg.test()时,慎重全局查找/.../g属性
2017-09-14 18:07
274 查看
正则表达式 ,test()慎重全局查找/…/g属性
先看下最开始的代码
是因为在接收到后台数据,由于第一次,再测试数据中,后台给的全是整数,所以我加g进行判断,全部正确,并没有发现错误;
第二次后台给的数据,是包含小数的,错误就出现了
结果显示的是
原因就是因为
具体原因论坛里有人已经分析过了,我就不详细说明了,贴上别人的连接[]http://blog.csdn.net/leolu007/article/details/8576490)]
但是,我想就我这次错误总结一下我的理解,希望我的理解能帮助到你。
加上全局g.会导致下一次的判断,会根据上一次的位置查找,不论reg.test() 括号里内容是否变化,
例如:
写到这里,不知道各位有没有点想法,这是我发现论坛里有没写到的地方,可能也许是还没找到写过人的帖子。。。。。
就是验证内容不管相同不相同,结果都是一次true,一次false
所以我想到了reg加g全局验证下,记录的index位置,是根据正则规则来定的,举个例子说明
所以,加g全局判断下,index的记录位置,是根据正则表达式来定的,不同表达式,初始位置都是0,即使验证同一段信息,不同正则表达式,再全局属性下,第一次验证结果也都是true。
发现了没有,所以index是和正则表达式规则息息相关的,和验证内容是没关系的。
当然,用同一正则表达式判断不同内容,还是要慎用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=/\./g reg.test(0.2)//true reg.test(0.2)//false,因为接着上一次的index位置查找,没找到正则中的内容,所以是false,false以后,index会自动归0 reg.test(0.2)//true reg.test(123.4)//false 注意,此时已经换了验证内容,但依然会是false
写到这里,不知道各位有没有点想法,这是我发现论坛里有没写到的地方,可能也许是还没找到写过人的帖子。。。。。
就是验证内容不管相同不相同,结果都是一次true,一次false
所以我想到了reg加g全局验证下,记录的index位置,是根据正则规则来定的,举个例子说明
var reg=/\./g; var ret=/\./g; reg.test(0.2)//true ret.test(0.2)//true;
所以,加g全局判断下,index的记录位置,是根据正则表达式来定的,不同表达式,初始位置都是0,即使验证同一段信息,不同正则表达式,再全局属性下,第一次验证结果也都是true。
发现了没有,所以index是和正则表达式规则息息相关的,和验证内容是没关系的。
当然,用同一正则表达式判断不同内容,还是要慎用g。我只是把自己理解到的,论坛里可能没人提到的写下来,对我自己也是个提醒。希望可以帮助大家。
相关文章推荐
- [JavaScript] js中全局标识正则表达式的lastIndex属性
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
- js中使用正则表达式,简单查找字母和数字
- js中使用正则表达式,全局匹配时如何取到匹配串?
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
- JS中正则表达式要注意lastIndex属性
- js 正则表达式之test函数讲解
- js对象中动态读取属性值 动态属性值 js正则表达式全局替换
- js 正则表达式之test函数讲解
- js正则表达式中test,exec,match方法的区别说明
- JS全局正则表达式匹配同一字符串结果不一致
- Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找
- js 的正则表达式 部分展示test()方法的验证功能
- 117 js 正则表达式 test方法 验证输入正整数 去空格 去双引号
- js 正则表达式test、exec、match
- js正则表达式 match exec test,以及g模式的一些知识点
- js正则表达式之input属性($_)RegExp对象属性介绍
- js正则表达式test()和exec()用法实例
- js正则表达式之$1$2$3$4$5$6$7$8$9属性,返回子匹配的结果