regExp的test方法取得的值变化的原因及处理办法
来源:互联网 发布:网络信用卡诈骗犯罪 编辑:程序博客网 时间:2024/05/07 18:22
1、JavaScript 正则表达式对象RegExp的test方法,用于检测一个字符串是否匹配某个模式。
字面量定义RegExp对象:var re = /pattern/attributes,其中attributes可以是g,i,m;
阅读以下程序:
<script type="text/javascript">
var str = 'abc123';
var re = /^abc/g ;
var result1 = re.test(str);
var result2 = re.test(str);
var result3 = re.test(str);
document.write('result1:' + result1 + '<br/>');
document.write('result2:' + result2 + '<br/>');
document.write('result3:' + result3);
</script>
我们会认为打印结果应该是true;true;true;
而实际情况却是true;false;true;
2、为什么第二个结果是false?发现RegExp对象有一个lastIndex的属性,如果使用了全局修饰符,那么执行test方法后,lastIndex就会记录匹配的字符串在原始字 符串中最后一位的索引加一,例如执行了var result1 = re.test(str)后lastIndex为3(document.write('re.lastindex:' + re.lastIndex+ '<br/>');),如果没有发现匹配lastIndex置为0。当下次再执行时,对给定的字符串匹配不是从开头位置,而是要依据lastIndex提供的位置,由于这个原因,所以导致上例中result2的值为false。
3、处理方法:去除g;
即:var re = /^abc/g ;变为 var re = /^abc/;
- regExp的test方法取得的值变化的原因及处理办法
- RegExp的test()方法
- 正则匹配的test方法值一直变化的原因讲解及解决方法
- javascript中RegExp对象的test方法
- javascript中RegExp对象的test方法
- 网页打开慢的原因及处理办法
- 注意 JavaScript 中 RegExp 对象的 test 方法
- JavaScript中正则表达式RegExp对象的test方法
- 注意 JavaScript 中 RegExp 对象的 test 方法
- “蓝屏”的原因及处理方法
- 死锁的原因及处理方法
- RegExp 对象的方法
- 为什么RegExp.prototype.exec()的返回值会变化
- Js 回车换行处理的办法及replace方法应用
- HMM 做训练的 Sigma not positive definite (非正定的)原因及处理办法
- RegExp对象的三个方法
- JavaScript RegExp对象的方法
- RegExp 正则表达式的方法
- 输入10个正整数,如果这10个正整数中有3个或3个以上相等的数相连,就将其替换为0
- Hibernate用注解配置复合主键
- Linux搭建SVN 服务器
- 名词解释之健康保险产品
- 常用html标签(二)
- regExp的test方法取得的值变化的原因及处理办法
- 图像平均 均值滤波抑制噪声的原理
- 函数适配器
- union-find算法中的quick-find算法的复杂度
- 2016/1/24 刷题所得
- 关联容器 multimap
- UIAlertController VS UIAlertView and UIActionSheet
- C++ 迭代器错误(一)
- elasticsearch扩容和机器下线