javascript计数匹配字符串长度

Posted

技术标签:

【中文标题】javascript计数匹配字符串长度【英文标题】:javascript count match string length 【发布时间】:2017-06-12 21:18:31 【问题描述】:

我有这个例子: https://jsfiddle.net/xqdwL914/1/

<div id="test">bar <i>def</i>ghij<br>bar <i>def</i>ghij</div>

我想像这样在多次出现中找到“条形”索引和长度:

var node = document.getElementById('test');
var text  = node.textContent;
var re = /bar/g;
while ((match = re.exec(text)) != null) 

alert("match found at: " + match.index+ " length: " +match.length);

 

输出:

在以下位置找到匹配项:0 长度:1

匹配发现于:11 长度:1

为什么长度是“1”它应该是“3”作为单词“bar”的三个字符 以及我如何获得每个匹配词条的最后一个索引????

【问题讨论】:

那么我如何计算每次迭代?? 当我这样使用它时: alert("match found at: " + match.index+ " length: " +text.match(re).length);它无限循环.. 【参考方案1】:

返回的match 是一个数组。我了解到您正在寻找第一个位置 (match[0]) 的 match 字符串的长度:

while ((match = re.exec(text)) != null) 
    alert("match found at: " + match.index+ " length: " +match[0].length);

【讨论】:

【参考方案2】:

来自MDN

如果匹配成功,则 exec() 方法返回一个数组并更新正则表达式对象的属性。返回的数组将匹配的文本作为第一项

var text  = 'bar <i>def</i>ghij<br>bar <i>def</i>ghij';
var re = /bar/g;
while ((match = re.exec(text)) != null) 
    console.log("match found at: " + match.index+ " length: " +match[0].length);

输出:

match found at: 0 length: 3
match found at: 22 length: 3

【讨论】:

以上是关于javascript计数匹配字符串长度的主要内容,如果未能解决你的问题,请参考以下文章

js正则匹配后如何通过函数对匹配字符进行处理,我匹配出的内容长度不是匹配内容的长度而是$1的长度?

[HDOJ6153] A Secret(kmp, 计数)

KMP字符串匹配算法

JavaScript表单验证

JavaScript 表单验证正则表达式大全

jquery文本区域长度计数?