RegEx(?=)结构

时间:2012-05-13 06:10:18

标签: javascript regex

考虑您正在搜索Bs之后出现的Cs。 为什么以下代码返回-1而不是2:

console.log('abc'.search(/(?=b)c/));

1 个答案:

答案 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