Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > формат стоимости


Автор: klyxa 9.1.2008, 16:41
народ,скажите как сделать проверку: только 2е цифры после точки?
у меня формат стоимости типа "5.00". регулярка:
Код

if(!preg_match("/^[0-9]+\.(?:\d\d)+/",$_POST['oneCallCost'])){

еще пробовал
Код

if(!preg_match("/^[0-9]+\.(?:\d\d)+(?!.)/",$_POST['oneCallCost'])){

Код

if(!preg_match("/^[0-9]+\.(?:\d\d)+\b/",$_POST['oneCallCost'])){


чтото из эи примеров срабатывает если,например, 5.456,а вот 5.4567 -уже нет. мб юзать {}? чтот я туплю(

Автор: DioNiR 9.1.2008, 17:02
а почему б просто не резать строку?

Автор: klyxa 9.1.2008, 17:18
всмысле резать?..
она может быть хоть 345345.56
хоть 43.55
кнешно можно explode по точке и далее резать строку,её вторую часть..но млять...нахер тогда регулярки придумали?=) полюбому есть способ лучше

Автор: Sunvas 9.1.2008, 20:14
Есть идея для проверки двух последних цифр сделать [0-9][0-9]

Автор: klyxa 9.1.2008, 20:24
вот,что у меня получилось:
Код

if(!preg_match("/^[0-9]+\.[0-9]{2}$/",$_POST['oneCallCost'])){

Автор: Sunvas 9.1.2008, 20:31
Тоже вариант

Автор: KoLiZeI 10.1.2008, 10:54
Может тогда вот так, или всегда 2 цифры должны быть?
Код

if(!preg_match("/^[0-9]+\.[0-9]{1,2}$/",$_POST['oneCallCost'])){

Автор: klyxa 10.1.2008, 12:27
Цитата

Может тогда вот так, или всегда 2 цифры должны быть?
Выделить всёкод PHP
1:
    
if(!preg_match("/^[0-9]+\.[0-9]{1,2}$/",$_POST['oneCallCost'])){


не,выдержка из справочника:
"xy{2} когда после х следует 2а y"
"xy{2,6} когда от 2ух до 6ти символов"
т.е. в твоём варианте будет, от 1ого до 2ух символов после точки. а формат стоимости,например, "5.00" 2 знака в люб случае.
конечно под Мою задачу подходит Мой вариант..но твой,пожалуй, будет логичнее в случае "5.8",не заставлять же писать "5.80" хотя хз =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)