[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регулярки числа-нечисла
wolfandman
Здравствуйте! Как решить задачу с помощью регулярок?

"100-reasons", "reasons-100", а так же "reasons" должны подпадать под шаблон.
"100" не должен подпадать под шаблон.

Спасибо!

_____________
Лучше быть, чем казаться
volter9
wolfandman
Можно типа так:
preg_match('/^([a-z]+\-\d+|\d+\-[a-z]+|[a-z]+)$/i', $text, $match);


_____________
Мой блог
wolfandman
Цитата (volter9 @ 20.03.2015 - 01:25)

preg_match('/^([a-z]+\-\d+|\d+\-[a-z]+|[a-z]+)$/i', $text, $match);

Круто! Работает! Спасибо за время! Только это слишком буквальное решение )
Можно ли сделать так чтобы под шаблон подпадали любые сочетания цифр, чисел, знаков -_
но 100 не подпадало?

_____________
Лучше быть, чем казаться
wolfandman
volter9, с вашей помощью пришёл к этому виду:
[\d]+\D+[\w-]+|\D+|[^\d]+\D+\w+


_____________
Лучше быть, чем казаться
volter9
wolfandman
Если Вам не нужно 100 (только цифра), а что бы попадало все остальное кроме 100, можно за юзать функцию is_numeric вместе с инверсией:
if (!is_numeric($text)) {
// остальные
}
else {
// 100
}


_____________
Мой блог
wolfandman
volter9, Вы знаете, тут всё не так просто. Я юзаю фреймворк, в нём есть маршрутизатор встроенный, там правила валидируются с помощью PCRE. Наверняка есть способ расширить правила, но я думаю, что регулярки - самый лёгкий способ. Единственное, давно с ними не работал - логику всю позабыл.


_____________
Лучше быть, чем казаться
S.Chushkin
Цитата (wolfandman @ 20.03.2015 - 02:01)
volter9, с вашей помощью пришёл к этому виду:
[\d]+\D+[\w-]+|\D+|[^\d]+\D+\w+

В принципе задача не сложная, если правильно описать задачу (почитайте про "Утверждения" в PCRE).
Для Вашей задачи будет что-то вроде:
preg_match_all('/(?<![\w\-])[\-]{0,1}\d+(?![\w\-])/m', $str, $numbers);

Находит все целые числа, не граничащие с символами perl-слова и тире.

_____________
Рекламка / ad.pesow.com Хрень / mr-1.ru
wolfandman
S.Chushkin, спасибо за совет! Почитаю.

_____________
Лучше быть, чем казаться
spooki
Можно сделать на совпадение
if (preg_match('/(100)/i', $text) == 1) 


_____________
XMLSEO сервис купли-продажи Яндекс.XML лимитов и туннелирования Yandex и Google выдачи
FatCat
Цитата (wolfandman @ 20.03.2015 - 00:07)
Как решить задачу с помощью регулярок?

Почему только регулярками?
if("".$str == "".intval($str))echo "число";
else echo "не число";


_____________
Бесплатному сыру в дырки не заглядывают...
volter9
FatCat
Потому что:
Цитата (wolfandman @ 20.03.2015 - 10:14)
Я юзаю фреймворк, в нём есть маршрутизатор встроенный, там правила валидируются с помощью PCRE.



_____________
Мой блог
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.