gpt4 book ai didi

javascript - 如何在不增加子表达式计数的情况下匹配子表达式中的 n+ 个实例?

转载 作者:行者123 更新时间:2023-11-29 17:28:02 26 4
gpt4 key购买 nike

(我知道我的问题令人困惑,所以请参阅下面的示例/解释)

我试图在一个大的正则表达式中匹配一堆东西,然后找出我匹配的子表达式。问题是当我的一个子表达式中有一个“集合/序列”时,它会抛出子表达式的索引。

例如,在下面的表达式中,“foo”的检查将位于索引 3 处:

/(one)|(two)|(foo)/g

但在这一个中,它位于索引 4(是的,这是一个愚蠢的正则表达式,但这个例子很合适):<​​/p>

/(one)|(([tT][wW])?o)|(foo)/g

如果您使用以下代码尝试查找“foo”,您会得到如下内容:

var str = "Some string that only matches foo";

while ( match = reg.exec( str ) )
{
for ( var i = 1; i < match.length; i++ )
{
//Should be 3 but it's not
if( match[ i ] !== undefined ) break;
}

//This won't match foo, because it's now the wrong index
alert( match[ i ] );
}

如何在子表达式括号内执行“一个或多个”类型的表达式而不影响通过“regex.exec”返回到“匹配”的索引?

(注意:如果这有任何不清楚的地方,请随时告诉我,我会尝试提出一个更好的示例和完整的示例代码)

最佳答案

(pattern) 匹配并捕获匹配。如果要匹配而不是捕获,请使用 (?:pattern)

关于javascript - 如何在不增加子表达式计数的情况下匹配子表达式中的 n+ 个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6919507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com