Я создал строковое значение с использованием метода padStart (padLeft), например:Удалить первые нулевые значения из строки с использованием регулярных выражений
"5".padStart(19, "0")
, что приводит к «0000000000000000005» Как я могу получить, что 5 назад с помощью регулярное выражение? Я проверил это:
/^0*(\d+)$/.exec(d)[1]
возвращающие 5 правильно.
Но это регулярное выражение возвращает нуль что-то вроде "00000012.22"
Образцы:
5> 5
005> 5
0011,22> 11,22 >> Это первая проблема!
00100 >> 100
001001 >> 1001
00,5 >> 0,5 Это вторая проблема!
Рабочие коды, но без регулярных выражений:
function toDb(d) {
if (d == null) return null;
var precisionIndex = d.indexOf('.');
return d.toString().padStart((29 + precisionIndex + 1), '0');
}
function fromDb(d) {
if (d == null) return null;
d = d.replace(/^0+/, ''); // I'd like to use regex here
if (d.indexOf('.') == 0) // I'd like to use regex here
d = '0' + d; // I'd like to use regex here
return d;
}
fromDb (toDb ('0,5')) возвращает 0.5 для меня. Но я бы хотел использовать регулярное выражение в моих кодах.
На самом деле существует регулярное выражение для решения таких задач, но, если вы хотите сделать его действительно понятным, оно будет очень длинным и довольно неумелым. –