捕获时是否正则表达式中的OR运算符的不同行为

jsv*_*isa 0 regex

我有两个正则表达式,一个是^0|[1-9][0-9]*$,另一个是^(0|[1-9][0-9]*),第一个表达式匹配字符串"01",而后一个表达式不匹配.两个表达的区别是什么?在我看来,后者只捕获匹配的字符串.我想知道为什么后来不能匹配"01"字符串.

Dmi*_*ylo 6

见图解说明

^0|[1-9][0-9]*$
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

^(0|[1-9][0-9]*)$
Run Code Online (Sandbox Code Playgroud)

正则表达式可视化

Debuggex演示

所以第二个RegEx要求字符串为"0"或以1-9字符开头.