Я пытаюсь найти строку с встроенными десятичными числами. Номер использует запятую (сто/тысячный разделитель) и точку для десятичного разделителя.Регулярное выражение для поиска десятичных чисел в строке
Пример недействительных десятичных чисел:
- .33, 0,333 (номер должен предшествовать по крайней мере, 1 цифра хотя и ноль)
- 1,22,33.33, 1,22.333 (последняя сегмент разделенной запятой цифр должен иметь 3 цифры)
- 0,3, 0,3333 (Десятичный номер должен иметь 2 или 3 цифры после десятичной)
- , 0,33 (Десятичное число не должно начинаться с запятой)
Пример допустимых десятичных чисел:
- 0,33 & 10,333
- 1,22,333.33 & 1,222.333
Особый случай: Если строка как «Вы/с bal.33.33" . Результат должен быть 33,33
Я попробовал следующее регулярное выражение:
(((\\d+\\,)+\\d{3})|([^,]\\d+))\\.\\d{2,3}(?!\\.\\d)
Он работает для всех случаев, но терпит неудачу, когда число ведущих запятая.
Нет это не должно иметь дробную часть. См. Недопустимый пример 3. – closure
Итак, '1,2,3,4,5,666.78' действительно? – anubhava
@anubhava: да, в данном примере выше. В идеале только первый сегмент может иметь одну цифру, все сегменты между ними должны иметь 2 или 3 цифры, но последний сегмент должен иметь 3 цифры. – closure