(?=正则表达式)VS(?:正则表达式)

Ehs*_*san 0 javascript regex

JavaScript (?=regex)(?:regex)JavaScript有什么区别?

请举例说明一下.

小智 10

(?=regex)是一个积极的前瞻,它匹配主表达式后面的一个组而不包括在结果中.
例:

\d(?=px)
1pt 2px 3em 4px
Run Code Online (Sandbox Code Playgroud)

这只会匹配2和而4不是整个2px4px.

(?:regex)是一个非捕获组,它将多个令牌组合在一起而不创建捕获组.
例:

(?:ha)+
hahaha haa hah!
Run Code Online (Sandbox Code Playgroud)

这将匹配每个ha,但不为它创建一个组.