如何使用正则表达式将零填充到字符串中 - 仅使用 regex101.com

How to pad zeroes into String using regex - using only regex101.com

我需要想出 "Regular expression" 和 "Substitute" 来用零填充任何短于 10 个字符的字符串。它必须适用于 regex101.com、PHP 风味。这就是我所需要的。

Example Input:

123
12345
1234567891

Expected output:

0000000123
0000012345
1234567891

我希望搜索 ([0-9]{1,9}) 并将其替换为 000000000$1 很简单,但显然字符串会超过 10 个字符的长度。所以我正在尝试使用预读语法但没有成功。

正如您在问题下方的评论中提到的,我提供了一种 .NET 方法,它使用目录来填充正则表达式中的字符串,而不使用条件替换 (see my answer here)。

这个答案可以通过使用分支重置组来适应 PCRE (?|...)

See regex in use here

选项 gJsm 和替代 ${x}

^((?|[1-9](?=.*1\t+(?<x>0+))|[1-9]\d(?=.*2\t+(?<x>0+))|[1-9]\d{2}(?=.*3\t+(?<x>0+))|[1-9]\d{3}(?=.*4\t+(?<x>0+))|[1-9]\d{4}(?=.*5\t+(?<x>0+))|[1-9]\d{5}(?=.*6\t+(?<x>0+))|[1-9]\d{6}(?=.*7\t+(?<x>0+))|[1-9]\d{7}(?=.*8\t+(?<x>0+))))\b

结果:

1
12
123
12345678
123456789

变成...

000000001
000000012
000000123
012345678
123456789