Подтвердить что ты не робот

Формат ввода формы HTML5 Формат валюты

Использование HTML5 У меня есть поле ввода, которое должно проверяться на введенную сумму в долларах. В настоящее время у меня есть следующая разметка:

<input type="number" pattern="(\d{3})([\.])(\d{2})">

Это отлично подходит для суммы, превышающей 100,00 и менее 1000,00. Я пытаюсь написать шаблон (регулярное выражение), чтобы принять сумму, которая меньше доллара и больше доллара. Возможно, свыше 100 000,00. Возможно ли это?

Любая помощь очень ценится!:)

С уважением, Бен

4b9b3361

Ответ 1

Если вы хотите разрешить разделитель запятой, который будет передавать следующие тестовые примеры:

0,00  => true
0.00  => true
01,00 => true
01.00 => true
0.000 => false
0-01  => false

затем используйте это:

^\d+(\.|\,)\d{2}$

Ответ 2

Самое лучшее, что мы могли бы придумать:

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

Я понимаю, что это может показаться чересчур большим, но, насколько я могу проверить, он соответствует всему, что человеческий глаз примет как действительную валютную ценность и сорвет все остальное.

Он соответствует этим:

1 => true
1.00 => true
$1 => true
$1000 => true
0.1 => true
1,000.00 => true
$1,000,000 => true
5678 => true

И сорняки этих:

1.001 => false
02.0 => false
22,42 => false
001 => false
192.168.1.2 => false
, => false
.55 => false
2000,000 => false

Ответ 3

Как насчет:

^\d+\.\d{2}$

Это соответствует одной или нескольким цифрам, точка и 2 цифры после точки.

Чтобы соответствовать также запятой как разделитель тысяч:

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

Ответ 4

Другим ответом для этого было бы

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

Это будет соответствовать строке:

  • одно или несколько чисел с десятичной точкой (\ d +)
  • любое число запятых, каждое из которых должно сопровождаться 3 номерами и иметь до 3 чисел перед ним (\ d {1,3}) (\,\d {3} |) *

Каждый или может иметь десятичное место, за которым должны следовать 2 числа (.\d {2} |)

Ответ 5

Я написал этот шаблон цены без нулевой цены.

(0\.((0[1-9]{1})|([1-9]{1}([0-9]{1})?)))|(([1-9]+[0-9]*)(\.([0-9]{1,2}))?)

Действительно для:

  • 1.00
  • 1
  • 1.5
  • 0.10
  • 0,1
  • 0,01
  • 2500,00

Недопустимый для:

  • 0
  • 0,00
  • 0.0
  • 2500.
  • 2500.0000

Проверьте мой код онлайн: http://regexr.com/3binj

Ответ 6

Мне нравится предоставлять пользователям немного гибкости и доверия, что они получат формат в правильном направлении, но я хочу обеспечить только цифры и два десятичных знака для валюты

^[$\-\s]*[\d\,]*?([\.]\d{0,2})?\s*$

Позаботится:

$ 1.
-$ 1.00
$ -1.0
.1
.10
-$ 1,000,000.0

Конечно, он также будет соответствовать:

$$--$1,92,9,29.1 => anyway after cleanup => -192,929.10

Ответ 7

Используйте этот шаблон "^\d*(\.\d{2}$)?"