Ответ 1
Если вы хотите разрешить разделитель запятой, который будет передавать следующие тестовые примеры:
0,00 => true
0.00 => true
01,00 => true
01.00 => true
0.000 => false
0-01 => false
затем используйте это:
^\d+(\.|\,)\d{2}$
Использование HTML5 У меня есть поле ввода, которое должно проверяться на введенную сумму в долларах. В настоящее время у меня есть следующая разметка:
<input type="number" pattern="(\d{3})([\.])(\d{2})">
Это отлично подходит для суммы, превышающей 100,00 и менее 1000,00. Я пытаюсь написать шаблон (регулярное выражение), чтобы принять сумму, которая меньше доллара и больше доллара. Возможно, свыше 100 000,00. Возможно ли это?
Любая помощь очень ценится!:)
С уважением, Бен
Если вы хотите разрешить разделитель запятой, который будет передавать следующие тестовые примеры:
0,00 => true
0.00 => true
01,00 => true
01.00 => true
0.000 => false
0-01 => false
затем используйте это:
^\d+(\.|\,)\d{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
Как насчет:
^\d+\.\d{2}$
Это соответствует одной или нескольким цифрам, точка и 2 цифры после точки.
Чтобы соответствовать также запятой как разделитель тысяч:
^\d+(?:,\d{3})*\.\d{2}$
Другим ответом для этого было бы
^((\d+)|(\d{1,3})(\,\d{3}|)*)(\.\d{2}|)$
Это будет соответствовать строке:
Каждый или может иметь десятичное место, за которым должны следовать 2 числа (.\d {2} |)
Я написал этот шаблон цены без нулевой цены.
(0\.((0[1-9]{1})|([1-9]{1}([0-9]{1})?)))|(([1-9]+[0-9]*)(\.([0-9]{1,2}))?)
Действительно для:
Недопустимый для:
Проверьте мой код онлайн: http://regexr.com/3binj
Мне нравится предоставлять пользователям немного гибкости и доверия, что они получат формат в правильном направлении, но я хочу обеспечить только цифры и два десятичных знака для валюты
^[$\-\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
Используйте этот шаблон "^\d*(\.\d{2}$)?"