Регулярное выражение для числа c десятичными знаками и тысячным разделителем

мне нужно регулярное выражение для проверки числа, которое может содержать тысячи разделителей или десятичных знаков с помощью javascript. Максимальное значение 9,999,999.99 Минимальное значение 0.01 Другие допустимые значения: 11,111 11.1 1,111.11

недопустимые значения: 1111 1111,11 ,111 111,

Я искал повсюду без радости.

3 ответов


/^\d{1,3}(,\d{3})*(\.\d+)?$/

о минимальных и максимальных значений... Ну, я бы не стал делать это с регулярным выражением, но вы можете добавить lookaheads в начале:

/^(?!0+\.00)(?=.{1,9}(\.|$))\d{1,3}(,\d{3})*(\.\d+)?$/

Примечание: В данном 0,999.00, Так что вы можете изменить его на:

/^(?!0+\.00)(?=.{1,9}(\.|$))(?!0(?!\.))\d{1,3}(,\d{3})*(\.\d+)?$/

что не позволило бы лидирующему 0.

Edit:
Тесты: http://jsfiddle.net/pKsYq/2/


((\d){1,3})+([,][\d]{3})*([.](\d)*)?

это сработало на нескольких, но я все еще изучаю регулярное выражение.

логика должна быть 1-3 цифры 0-1 раз, 1 запятая, а затем 3 цифры любое количество раз ,и один. затем любое количество цифр 0-1 раз


я использовал ниже regrex для следующих повторений -

^(?!0|\.00)[0-9]+(,\d{3})*(.[0-9]{0,2})$
  1. 0 и не разрешить .00.
  2. ','(разделитель тысяч) после 3 цифр.
  3. '.'(decimal до 2 знаков после запятой).