В самом общем случае вы можете использовать
^\d+(?:,\d+)*(?:\.\d+)?$ // 432 or 4.653 or 1,44,43211 or 1,4456,43211754.876597
См. Демонстрационный пример регулярных выражений и график регулярных выражений :
Подробности
^
- начало строки \d+
- 1+ цифр (?:,\d+)*
- 0 или более повторений ,
и 1+ цифр (?:\.\d+)?
- 1 или 0 повторений .
и 1+ цифр $
- конец строки.
Используйте ограничивающие квантификаторы и заглядывания, чтобы наложить ограничения на длину.Например:
^(?!(?:,?\d){6})\d+(?:,\d+)*(?:\.\d{1,3})?$
^^^^^^^^^^^^^^^
Отрицательный прогноз (?!(?:,?\d){6})
провалит совпадение, если в целой части числа 6 или более цифр.Если вы хотите ограничить длину целого числа, измените lookahead на (?!.{6})
, и он будет соответствовать только числам до 5 символов: 1
, 1.55
, 35.99
, но не 100.12
(= 6 символов).