为什么 Regex.Replace 给我最后一组奇怪的结果

Kas*_*hov 2 c# regex

一个简单的例子:

Regex.Replace("12345678910999999999", @"(\d{3})(\d{3})(\d{3})(\d{2})", "$1-$2-$3 $4")
Run Code Online (Sandbox Code Playgroud)

这输出到:

123-456-789 10999999999
Run Code Online (Sandbox Code Playgroud)

但为什么?我已经专门设置了我需要的组索引。并且该组索引包含确切值(在调试器中检查)。

这是一个小提琴:https : //dotnetfiddle.net/dkAPx3

Wik*_*żew 5

匹配字符串的其余部分.*以截断它:

Regex.Replace("12345678910999999999", @"^(\d{3})(\d{3})(\d{3})(\d{2}).*", "$1-$2-$3 $4")
Run Code Online (Sandbox Code Playgroud)

我还会^在开头添加以匹配字符串的开头。

请参阅.NET 正则表达式演示