Позволяет вводить денежные суммы во вход с помощью JavaScript Regex - PullRequest
1 голос
/ 23 февраля 2012

Я использую простой ванильный JavaScript и мне нужна помощь с моим регулярным выражением.Деньги в следующих форматах должны быть разрешены, и только в этих форматах (без ограничения числа 0 (десятки, сотни, тысячи и т. Д.) Для допустимых сумм в долларах):

  • $ 25 000
  • $ 25000
  • 25 000
  • 25000
  • 25000.01
  • 25 000,99
  • 2000,99
  • 50,00
  • 50
  • 1,95
  • 1 .99
  • 0,25
  • $ 0,25
  • 0,2
  • 2.3
  • 2000.5
  • .75

var regex = /^\$?.?[1-9][0-9,]*([0-9] {0,2}.) $ /?;

В настоящее время не разрешается вводить суммы, подобные 0,99.

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Попробуйте это

^\$?(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$

Посмотрите это здесь на Regexr

Единственное, что не соответствует, это ваш третий последний пример, у него есть пробел передточкаЭто действительно так?

Редактировать:

У моего решения для запястья есть ограничение, что он будет принимать числа, начинающиеся с 0, как 001. Это решение использует отрицательный прогноз наИзбегайте этого:

^\$?(?!0\d)(?:\d+|\d{1,3}(?:,\d{1,3})*)(?:\.\d{2})?$

Смотрите это здесь на Regexr

Решение без ожидания

^\$?(?:0|[1-9]\d*|[1-9]\d{0,2}(?:,\d{1,3})*)(?:\.\d{2})?$

Смотрите это на RegExr

0 голосов
/ 23 февраля 2012
^\$?(?:[1-9]\d?\d?(?:(?:,\d{3})*|(?:\d{3})*)|0)(?:\.\d\d?)?$

Хотя я бы не использовал такие строгие ограничения на ввод.

...