如何使用正则表达式 php 在大字符串中查找单个数字

How to find single digits in a large string with regex php

我有包含日期​​、一位数和两位数的大字符串。我需要找到并用前面的零填充单个数字(也可以在日期中,因为月份和日期可能是单个数字)。数据格式如下:

m/d/yyyy 1,21,3,42,5,63,7,84,9

我需要这种格式

mm/dd/yyyy 01,21,03,42,05,63,07,84,09

我试过这个:

$pattern = "#[9]{1}#m";
$str = preg_replace($pattern, "09, $str);

它有点管用,但对于像 29 这样不应该被触及的数字,它会将其变成 209。理想情况下,我想使用通配符而不是特定数字,这样它就会填充所有字符串中的单个数字,但我还没有完全弄清楚那部分。任何帮助将不胜感激,谢谢。

您可以匹配没有被数字包围的数字 1-9

(?<!\d)[1-9](?!\d)

Regex demo

替换为零和完全匹配 0[=12=]

如果不想匹配日期中的数字,可以断言一个逗号或字符串的结尾在右边:

\b[1-9](?=,|$)

Regex demo