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

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

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



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

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

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

Без них ваше выражение истинно уже для первого символа: он не ноль, а второго символа может и не быть, а что там дальше или сначалу - не важно. Условия начала и конца - дополняют что больше "ваще ничего не должно быть"... как-то так.
...
Рейтинг: 0 / 0
Проверка корректности числа через regexp
    #38329944
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhayintval мне не подходит, т.к. нужна строкая проверка, что это число
is_numeric()
...
Рейтинг: 0 / 0
Проверка корректности числа через regexp
    #38329958
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю, в этой задаче было бы более правильно отвлечся от понятия "число" и рассматривать проверяемое значение как строку. Это кажется наиболее простым вариантом.
Тот же is_numeric() в значениях 2e5 или 010.3 признает числа, но они не должны проходить по условию задачи. В конечном счете получится довольно громоздкая конструкция из нескольких функций.
...
Рейтинг: 0 / 0
Проверка корректности числа через regexp
    #38329966
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проверка корректности числа через regexp
    #38329972
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все что юзер вносит проверяется, форматируется и возвращается обратно в правильном виде туда, куда юзер вносит. Если юзер ввел настолько криво, что вернуть ничего нельзя - возвращается умолчание. Для особо тупых предусматривают баллоны жОлтого цвета.
...
Рейтинг: 0 / 0
Проверка корректности числа через regexp
    #38329979
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения но в этом sql нет кнопки update. :)

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

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

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


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