JavaScript入门教程

JavaScript简介
JavaScript语法基础
JavaScript流程控制
JavaScript函数
面向对象编程
JavaScript事件
JavaScript DOM
正则表达式
JavaScript BOM
AJAX

专题分析

浏览器兼容性
JS优化
Web前端开发规范
编辑器推荐
总结和笔记

学习助手

对象参考手册
ECMAScript分析
数据中心
QQ交流群

JavaScript RegExp对象的属性

JavaScript RegExp对象有5个属性,分别是:global、ignoreCase、multiline、source 和 lastIndex。

global、ignoreCase、multiline 用来检测正则表达式是否有 g 标志、i  标志和 m 标志,如果该标志被设置,返回 true ,否则返回 false 。

例如,检测正则表达式是否带有修饰符:
alert( /abc/g.global ) ;  // 显示true
alert( /^abc$/.global ) ;  // 显示false
alert( /^[0-9a-z]{1,}$/.ignoreCase ) ;  // 显示false
alert( /^[0-9a-z]{1,}$/i.ignoreCase ) ;  // 显示 true

source 属性用来返回正则表达式的源文本,该文本不包括正则表达式字面量使用的定界符,也不包括标志 g、i、m。

例如:
alert(/abc/.source) ;  // 显示 abc
alert(/^abc$/.source) ;  // 显示 ^abc$
alert(/www.itxueyuan.org/ig.source) ;  // 显示 www.itxueyuan.org
alert( /^[0-9a-z]{1,}$/i.source ) ;  // 显示 ^[0-9a-z]{1,}$

lastIndex 属性用于规定下次匹配的起始位置。

lastIndex 属性存放一个整数,规定下次匹配的起始位置,该位置是上一次匹配成功的文本后面的第一个字符的位置。

下来看下面一个例子:
var str = "Itxueyuan's domain is www.itxueyuan.org. Welcome to itxueyuan !";
var pattern = new RegExp("itxueyuan", "ig");
var i=1;
while(pattern.test(str)){
    i++;
    alert("第 "+i+" 次匹配的的起始位置:"+pattern.lastIndex);
}

运行结果:
第 2 次匹配的起始位置:9
第 3 次匹配的起始位置:35
第 4 次匹配的起始位置:61

匹配示意图:


实例演示:

点击这里开始演示


上面的例子说明,test() 方法是以 lastIndex 属性所指的位置作为下次检索的起始点。第一次检索,lastIndex = 0 ;第二次检索,lastIndex = 9;第三次检索,lastIndex =35;第四次检索,lastIndex = 61 。

这样,就可以通过反复调用 test() 方法来遍历一个字符串中的所有匹配文本。

lastIndex 属性是可读可写的,只要目标字符串的下一次搜索开始,就可以对它进行设置。当 test() 方法再也找不到可以匹配的文本时,会自动把 lastIndex 属性重置为 0。

注意:
  • 不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。
  • 如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0。