在firefox中运行如下代码会出现不是你期望的结果。
var str = 'A_A_EA_A_A_A_A_EA_A_A_AE_A_A_A_A_A_A_A_A_A_A_';
function getindex(c, str){
if(!str){
return [];
}
var arry = str.split('_'),
reg = new RegExp(c,'ig'),
length = arry.length,
result = [],
i = 0;
while(i<length){
//reg.lastIndex=0;
if(reg.test(arry[i])){
result.push(i);
}
i++;
}
return result;
}
console.log(getindex('A', str));
O(∩_∩)O哈哈~
问题是使用正则的
test方法而且带有
g属性进行
连续匹配的时候, 如果每次匹配之前
lastIndex属性没有清零,可能会出现问题。
不知道是不是只有js语言有这个问题?其他语言还有待测试...
补充, 进一步理解 lastIndex 属性
var str = "The rain in Spain stays mainly in the plain";
var patt1 = new RegExp("ain", "g");
patt1.test(str);
patt1.test(str);
patt1.test(str);
patt1.test(str);
patt1.test(str);
patt1.test(str);
console.log("Match found. index now at: " + patt1.lastIndex);
开始先运行第一个test,其他的都注释掉
第二次运行两个test,其他的都注释掉,依次类推,查看结果
引用
http://www.w3school.com.cn/js/jsref_lastindex_regexp.asp
分享到:
相关推荐
RegExp对象是JavaScript中用于处理正则表达式的关键内置对象,它包含几个重要的属性:`source`、`global`、`ignoreCase`、`multiline`和`lastIndex`。其中`lastIndex`属性具有可读可写的特点,并且只在正则表达式中...
1.lastIndex属性,返回匹配内容的最后一个索引位置,也就是下一个匹配的开始位置,注意字符串索引从0开始 代码: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 2.lastMatch($&)属性,只读属性,如果没有匹配...
精通JS正则表达式的知识点详解 ...总之,精通JavaScript正则表达式不仅能够提高字符串处理的能力,还能让代码更加高效和优雅。通过对正则表达式的学习和实践,开发者可以轻松地解决各种字符串操作问题,提升编程效率。
### JavaScript正则表达式构造函数 JavaScript提供了`RegExp`构造函数来创建正则表达式对象。这个构造函数可以接受一个模式字符串和可选的标志符参数。例如: ```javascript var pattern = /ab*/; ``` 或者通过...
这篇学习笔记将深入探讨JavaScript正则表达式的概念、语法和实际应用。 一、正则表达式基础 1. 创建正则表达式: - 字面量表示法:`/pattern/flags` - 构造函数:`new RegExp('pattern', 'flags')` 2. 常见的...
在本文中,我们将深入探讨JavaScript正则表达式的一些关键概念和方法,以帮助你更好地理解和运用它们。 1. **$_属性**:这个属性并不属于正则表达式对象,而是全局变量,它保存了上一次匹配操作的完整匹配结果。...
JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本字符串,执行模式匹配和字符串操作。在JavaScript中,正则表达式是一种强大的工具,能够帮助开发者进行复杂的文本搜索、替换和分割...
正则表达式对象提供了多种方法和属性,用于执行各种匹配操作: 1. **方法** - `test()`: 检测字符串是否包含匹配项,返回布尔值。 - `exec()`: 在字符串中查找匹配项,返回一个数组或null。 - `compile()`: 编译...
JavaScript正则匹配方法学习主要包括三个方面的知识点:match方法、exec方法、test方法。 首先,我们来看match方法。match方法是String对象的方法,它可以用于检索字符串,以找到与正则表达式匹配的所有子串。该...
在JavaScript编程语言中,正则表达式是一种强大的文本处理工具,用于执行模式匹配、搜索和替换等功能。本文详细介绍了JavaScript中正则表达式全局匹配模式的使用方法,特别是当添加了“/g”标志时,它能让正则表达式...
在JavaScript中,正则表达式(Regular Expression)是一种强大的文本处理工具,它由一系列字符和特殊符号组成,用于匹配字符串中的特定模式。JavaScript通过提供内置的`RegExp`对象来支持正则表达式的创建与使用。...
在全局匹配模式下,正则表达式引擎会维护一个名为`lastIndex`的属性。这个属性表示下次匹配开始的位置。如果找到了匹配项,`lastIndex`会被设置为匹配内容的下一个字符的索引。如果没有找到匹配项,`lastIndex`会被...
- 使用` lastIndex`属性在全局搜索中跟踪上次匹配结束的位置。 - 使用`RegExp.prototype.compile()`(非标准,但某些环境支持)重新编译正则表达式。 - 正则表达式对象的静态方法,如`RegExp.escape()`(非标准,...
正则表达式对象提供了多种方法和属性,帮助我们更好地操作和理解匹配结果: - **`test()`**:测试字符串是否与正则表达式匹配,返回布尔值。 - **`exec()`**:执行匹配查找,返回包含匹配结果的数组。 - **`compile...