Вы использовали только один заполнитель в шаблоне замены, но в шаблоне регулярных выражений вы использовали две подстроки с двумя группами захвата, поэтому одна потеряна.
Чтобы добавить 0
перед однозначными числами, вы можете используйте
txt.replace(/\b\d\b/g,'0$&')
txt.replace(/(^|\D)(\d)(?!\d)/g,'$10$2')
txt.replace(/(?<!\d)\d(?!\d)/g,'0$&') // With the ECMAScript2018+
Здесь \b\d\b
соответствует значению di git, которому не предшествует и не следует буква ASCII, di git или _
. Подстановка: 0
и значение полного совпадения $&
.
Начало строки (^|\D)(\d)(?!\d)
для захвата паттерна строки или не-ди git символа в Группу 1, затем ди git попадает в группу 2. Затем (?!\d)
проверяет, нет ли di git сразу справа. Подстановка: $10$2
, значение группы 1, 0
, а затем значение группы 2.
Шаблон (?<!\d)\d(?!\d)
соответствует любому di git, не заключенному в другие цифры, и подстановка такая же, как в случае 1.
JS демо:
var txt = '2020-5-1 1:2';
console.log( txt.replace(/\b\d\b/g,'0$&') )
console.log( txt.replace(/(^|\D)(\d)(?!\d)/g,'$10$2') )