Вот такое регулярное выражение заменит ноль в начале строки на пустую строку, если за нулём НЕ идёт один из
. + - * /
var re = /^0(?![\.\+\-\/\*])/;
['03','0','0.','0+'].map(s => s.replace(re,'')) /* 3,,0.,0+ */
Просто единственный ноль также удалится – ведь за ним не идёт один из спец-символов. Поэтому применяйте эту регулярку только когда длина строки больше 1.
Старый ответ
Неудобно организовано, т.к. содержание табло может поменяться из нескольких мест..
С минимальными правками отн. нынешнего варианта, можно попробовать так:
везде, где изменяется содержание табло, получать введённые числа (бить строку по одному из + - * /
; каждую из частей бить по точке, и каждое из получившихся целых прогонять через parseInt()
– это отбросит нули в начале. Потом собирать: склеить точкой, склеить знаком операции.
Но лучше как-то иначе организовать всю логику. Например, в процессе ввода не текстовую строку собирать, а заполнять массив числами и операторами. [5.1, "*", 4.2, "-", 3.7]
И перед склейкой в одну строку для отображения в табло, проводить необходимые коррекции чисел.