Выделить число с любыми разделителями "," "." RegExp
Пользователь вводит число, для своего удобства он может разделять тысячи ',' при этом записывая дробное число. То есть: 1000 || 1,999 || 19,999.4353. Выделить это число надо из текста, так что надо регулярное выражение которое выдаст это число.
let num = value.math(/RegExp/g);
Ответы (3 шт):
Если я правильно понял, возможно:
/\d+(?:,\d+)*(?:\.\d+)?/g
> '1000 1,999 19,999.4353'.match(/\d+(?:,\d+)*(?:\.\d+)?/g)
[ '1000', '1,999', '19,999.4353' ]
Нашел решение, но оно не идеальное. Если кого то натолкнет на мысль лучше, кидайте в комменты)
/([\,?\.?\d+]+)/g
В этой регулярке есть проблема. Отрабатывают значения "," и "." так же отрабатывают их множественные повторения. Происходит это из за '[ ]'. Фиксится 2 способами:
- Заменить их на '( )', однако это добавит вторую сохраняемую группу в ваш массив. Если вам это не критично, можно использовать этот метод.
Поставить проверку на "," и ".". Моя проверка выглядит так:
if (!/\,+/.test(val) || !/\.+/.test(val)){}
Предлагаю вот такой вариант
const regex = /[-+]?(?:[0-9]+,)*[0-9]+(?:\.[0-9]+)?/gm;