文档章节

JavaScript 正则表达式对象RegExp test方法慎用/g

二分之一
 二分之一
发布于 2014/06/09 10:20
字数 299
阅读 1442
收藏 4

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;

为什么第二个结果是false?发现RegExp对象有一个lastIndex的属性,如果使用了全局修饰符,那么执行test方法后,lastIndex就会记录匹配的字符串在原始字 符串中最后一位的索引加一,例如执行了var result1 = re.test(str)后lastIndex为3(document.write('re.lastindex:' + re.lastIndex+ '<br/>');),如果没有发现匹配lastIndex置为0。当下次再执行时,对给定的字符串匹配不是从开头位置,而是要依据lastIndex提供的位置,由于这个原因,所以导致上例中result2的值为false。

因此使用RegExp的test方法

© 著作权归作者所有

共有 人打赏支持
二分之一
粉丝 12
博文 29
码字总数 9595
作品 0
唐山
程序员
私信 提问
简单说 正则表达式——要注意lastIndex属性

说明 这篇文章,主要和大家聊聊JavaScript中RegExp对象的属性。 解释 每个RegExp对象都包含5个属性,source、global、ignoreCase、multiline、lastIndex。 source:是一个只读的字符串,包含...

FEWY
2017/07/10
0
0
js中replace的用法-正则替换

replace方法的语法是:stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串...

cheese
2012/08/01
0
1
Javascript中的正则表达式

正则表达式提供了强大的字符串检索和操作的能力,这些能力在Javascript中有着比其他语言更广泛的应用。对于运行于浏览器环境中的Javascript,HTML文档的DOM操作和样式操作是其主要任务之一,...

con
2014/04/30
0
1
JavaScript零基础入门——(七)当字符串遇上正则表达式

JavaScript零基础入门——(七)当字符串遇上正则表达式 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们学习了几种常用的字符串处理的方法,但上节课我们也说了,原生的字符串处理...

JandenMa
2018/06/16
0
0
JavaScript正则表达式用法汇总

JavaScript正则表达式的用法 正则表达式是一种可以用于模式匹配和替换的强大工具,在很多语言中都可以应用。JavaScript对正则表达式提供了很好的支持, Javascript中有一个正则表达式对象Reg...

zhaodang
2009/05/31
235
0

没有更多内容

加载失败,请刷新页面

加载更多

Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
3
0
kafka在的使用

一、基本概念 介绍 Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统...

狼王黄师傅
今天
1
0
Android JNI总结

0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大大增强。 JNI在Android中起着连接Java和C/C++层的作...

天王盖地虎626
昨天
1
0
大数据教程(11.8)Hive1.2.2简介&初体验

上一篇文章分析了Hive1.2.2的安装,本节博主将分享Hive的体验&Hive服务端和客户端的使用方法。 一、Hive与hadoop直接的关系 Hive利用HDFS存储数据,利用MapReduce查询数据。 二、Hive与传统数...

em_aaron
昨天
3
0
跟我学Spring Cloud(Finchley版)-15-Hystrix监控详解

Hystrix提供了监控Hystrix Command的能力,本节来详细探讨。 监控端点与数据 应用整合Hystrix,同时应用包含spring-boot-starter-actuator 依赖,就会存在一个/actuator/hystrix.stream 端点...

周立_ITMuch
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部