考虑您正在搜索Bs之后出现的Cs。 为什么以下代码返回-1而不是2:
console.log('abc'.search(/(?=b)c/));
答案 0 :(得分:7)
因为(?=
is for lookahead, not lookbehind。
q(?=u)
匹配后跟q
的{{1}},而不会将u作为匹配的一部分。
在你问:JavaScript regex does not support lookbehind之前。但是,在这种简单的情况下,您可以使用基于前瞻的解决方法:
u
这是有效的,因为您正在寻找var index = 'abc'.search(/b(?=c)/);
if (index !== -1) index++;
console.log(index);
前面c
的位置,但这在逻辑上与大于b
后跟{{1}的位置的位置相同}}
然而,在你太兴奋之前:你不需要正则表达式。完全没有。
b