考虑您正在搜索出现在 B 之后的 C。为什么以下代码返回 -1 而不是 2:
console.log('abc'.search(/(?=b)c/));
q(?=u)
匹配q
后跟 a 的 au
,而不使 u 成为匹配的一部分。
在你问之前:JavaScript regex 不支持 lookbehind。但是,在这种简单的情况下,您可以使用基于前瞻的解决方法:
var index = 'abc'.search(/b(?=c)/);
if (index !== -1) index++;
console.log(index);
之所以有效,是因为您正在寻找 的 位置,c
但这b
在逻辑上与 的位置 大于 1b
相同c
。
但是,在您太兴奋之前:您不需要正则表达式。完全没有。
var index = 'abc'.indexOf('bc');
if (index !== -1) index++;
console.log(index);