(我知道我的问题令人困惑,因此请参阅以下示例/说明)
我试图在一个大的正则表达式中匹配一堆东西,然后找出我匹配的子表达式。问题是当我的一个子表达式中有一个“集合/序列”时,就抛出了子表达式的索引。
例如,在下面的表达式中,对“ foo”的检查将在索引3处:
/(one)|(two)|(foo)/g
但是在此示例中,它位于索引4(是的,这是一个愚蠢的正则表达式,但该示例很合适):
/(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”返回到“ match”的索引?
(注意:如果有任何不清楚的地方,请立即告诉我,我将尝试提供更好的示例和完整的示例代码)
最佳答案
(pattern)
匹配并捕获匹配。如果要匹配而不是捕获,请使用(?:pattern)
关于javascript - 如何在不增加子表达式数量的情况下匹配子表达式内某事的n +个实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6919507/