Javascript正则表达式:如何查找匹配的长度

Javascript regex: How to find length of a match?

本文关键字:查找 正则表达式 何查找 Javascript      更新时间:2023-09-26

我有一项任务要为C#编写代码highlighter。一切都很好,但我希望优化缩进。所以,我有一个看起来像/('t|[ ]{4})/g的正则表达式,所以我用<span style="margin-left: 2em;" />替换了制表或4个空格字符,它看起来不错,但它会产生很多不必要的跨度。我想使用类似/^[ ]{x}/g的东西,并用<span style='margin-left: "+(0.5*x)+"em;' />替换,以便每行只有一个跨度,并具有适当的裕度。str.match()不起作用,因为它搜索所有文档,而不是每行。

如果正则表达式有g标志,您可以反复执行它,从字符串中获取所有匹配项,包括匹配项的长度:

var re = /^('t|[ ]{4})/g;
var match;
while((match = re.exec(text)) {
    // use match.index and match[0].length
}