Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Проверка корректности числа через regexp / 12 сообщений из 12, страница 1 из 1
11.07.2013, 17:09
    #38328430
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
Всем привет.
Помогите написать регулярку, которая проверяет, является ли число целым, положительным и отличным от нуля.
Важно также, чтобы оно не начиналось на 0.

Иными словами, переменная состоит из одного или более символов, первый - 1-9, второй 0-9 или может не быть.

Код: php
1.
2.
$var = '1a';
var_dump(preg_match('/([1-9][0-9]*)/', $var)); // int(1)



Что не так?
...
Рейтинг: 0 / 0
11.07.2013, 17:15
    #38328442
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
добавьте в шаблон условия начала и конца строки, примерно так: ^[1-9][0-9]*$
...
Рейтинг: 0 / 0
12.07.2013, 08:53
    #38328777
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
urukhay,

if (intval($var)>0) {}
...
Рейтинг: 0 / 0
12.07.2013, 15:10
    #38329528
urukhay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
miksoft,
Спасибо! А по чему без них не работает, не подскажете?

r u,
intval мне не подходит, т.к. нужна строкая проверка, что это число, а, например, intval('1a') выдаст 1, а мне нужно такой случай отсечь!
...
Рейтинг: 0 / 0
12.07.2013, 15:15
    #38329535
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
urukhayintval мне не подходитА так? if (strval(intval($var))==$var && $var != '0')
...
Рейтинг: 0 / 0
12.07.2013, 20:31
    #38329942
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
urukhay,

Без них ваше выражение истинно уже для первого символа: он не ноль, а второго символа может и не быть, а что там дальше или сначалу - не важно. Условия начала и конца - дополняют что больше "ваще ничего не должно быть"... как-то так.
...
Рейтинг: 0 / 0
12.07.2013, 20:35
    #38329944
r u
r u
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
urukhayintval мне не подходит, т.к. нужна строкая проверка, что это число
is_numeric()
...
Рейтинг: 0 / 0
12.07.2013, 20:51
    #38329958
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
Думаю, в этой задаче было бы более правильно отвлечся от понятия "число" и рассматривать проверяемое значение как строку. Это кажется наиболее простым вариантом.
Тот же is_numeric() в значениях 2e5 или 010.3 признает числа, но они не должны проходить по условию задачи. В конечном счете получится довольно громоздкая конструкция из нескольких функций.
...
Рейтинг: 0 / 0
12.07.2013, 20:58
    #38329966
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
vkle,

По-моему так не делают. Это же валидация?

Вроде похоже http://www.php.net/manual/en/function.intval.php#109750

Код: sql
1.
2.
3.
<? 
echo preg_match('/^(0|(-{0,1}[1-9]\d*))$/', "0");
?>



1
...
Рейтинг: 0 / 0
12.07.2013, 21:02
    #38329972
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
Все что юзер вносит проверяется, форматируется и возвращается обратно в правильном виде туда, куда юзер вносит. Если юзер ввел настолько криво, что вернуть ничего нельзя - возвращается умолчание. Для особо тупых предусматривают баллоны жОлтого цвета.
...
Рейтинг: 0 / 0
12.07.2013, 21:07
    #38329979
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
Прошу прощения но в этом sql нет кнопки update. :)

Так вот, для меня очевидно, я подумал что может быть не для всех. Всегда необходимо показывать юзеру как будет правильно. Нельзя брать кривые данные и пытаться понять что дятел на той стороне реки прохрипел. Принуждая юзера к информационной культуре вы облегчаете себе жизн.

Как бы я сделал в интерфейсе обычной апликухе. Превратил бы в число и сравнил с известным условием. Не удовлетворяет - кнопка не активна, в поле вернулся правильный формат, появился баллон "Тебе же идиот написали: целое, больше нуля"
...
Рейтинг: 0 / 0
12.07.2013, 22:12
    #38330031
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверка корректности числа через regexp
debloggervkle,

По-моему так не делают. Это же валидация?Понятия не имею, что это. Может данные из файла читаются или снимаются с какого-то датчика и по условию нужно их по-разному обработать. Например, выделить зеленым. У топикстартера условия задачи сформулированы предельно четко. Есть у Вас рабочее решение кроме исправленного регекспа из первого поста?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Проверка корректности числа через regexp / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]