Регулярное выражение для десятичного числа с использованием только одной точки метод replace ()

1

Я просто хочу, чтобы кто-то напечатал 10.01.1, тогда это будет 10.011, и если кто-то напечатает что-то вроде 10.00............ 1, он станет 10.001

Я пробовал это .replace(/(\d*)(\.){1,1}(\d*)(?=(\.)+)/g,'$1'). Но это не работает для меня

  • 1
    Замените все точки, начиная с индекса первой точки до конца строки.
  • 0
    @thanks спасибо, но я хочу решить все проблемы с точками, как 2, упомянутые в проблеме с одним регулярным выражением. Я пробовал это .replace (/ (\ d *) (\.) {1,1} (\ d *) (? = (\.) +) / G, '$ 1'), который не работает
Теги:
regex-group

2 ответа

1

Вы могли бы подсчитать точки и заменить onlc firts точкой, остальное устранить точку.

function singleDot(s) {
    return s.replace(/\./g, (c => _ => c++ ? '' : '.')(0));
}

console.log(['0.0', '0....0', '0.0...1'].map(singleDot));
  • 0
    @ спасибо Нина, но не могли бы вы объяснить, как использовать (0) в конце функции замены
  • 2
    это начальное значение c в замыкании.
Показать ещё 1 комментарий
0

Вы можете использовать split и dot в качестве разделителя:

const strings = [
  "10.01.1",
  "10.00............1",
  "100",
  ""
];
strings.forEach((s) => {
  const [head, ...rest] = s.split('.');
  console.log(rest.length ? head + '.' + rest.join('') : head);
});
  • 0
    Мне нужно сделать только с помощью регулярных выражений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню