wolfandman
20.03.2015 - 01:07
Здравствуйте! Как решить задачу с помощью регулярок?
"100-reasons", "reasons-100", а так же "reasons" должны подпадать под шаблон.
"100" не должен подпадать под шаблон.
Спасибо!
_____________
Лучше быть, чем казаться
volter9
20.03.2015 - 01:25
wolfandmanМожно типа так:
preg_match('/^([a-z]+\-\d+|\d+\-[a-z]+|[a-z]+)$/i', $text, $match);
_____________
Мой блог
wolfandman
20.03.2015 - 01:35
Цитата (volter9 @ 20.03.2015 - 01:25) |
preg_match('/^([a-z]+\-\d+|\d+\-[a-z]+|[a-z]+)$/i', $text, $match); |
Круто! Работает! Спасибо за время! Только это слишком буквальное решение )
Можно ли сделать так чтобы под шаблон подпадали любые сочетания цифр, чисел, знаков -_
но 100 не подпадало?
_____________
Лучше быть, чем казаться
wolfandman
20.03.2015 - 02:01
volter9, с вашей помощью пришёл к этому виду:
[\d]+\D+[\w-]+|\D+|[^\d]+\D+\w+
_____________
Лучше быть, чем казаться
volter9
20.03.2015 - 02:56
wolfandmanЕсли Вам не нужно 100 (только цифра), а что бы попадало все остальное кроме 100, можно за юзать функцию is_numeric вместе с инверсией:
if (!is_numeric($text)) {
}
else {
}
_____________
Мой блог
wolfandman
20.03.2015 - 10:14
volter9, Вы знаете, тут всё не так просто. Я юзаю фреймворк, в нём есть маршрутизатор встроенный, там правила валидируются с помощью PCRE. Наверняка есть способ расширить правила, но я думаю, что регулярки - самый лёгкий способ. Единственное, давно с ними не работал - логику всю позабыл.
_____________
Лучше быть, чем казаться
S.Chushkin
20.03.2015 - 10:18
Цитата (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
20.03.2015 - 10:31
S.Chushkin, спасибо за совет! Почитаю.
_____________
Лучше быть, чем казаться
spooki
24.03.2015 - 10:06
FatCat
24.03.2015 - 19:21
Цитата (wolfandman @ 20.03.2015 - 00:07) |
Как решить задачу с помощью регулярок? |
Почему
только регулярками?
if("".$str == "".intval($str))echo "число";
else echo "не число";
_____________
Бесплатному сыру в дырки не заглядывают...
volter9
24.03.2015 - 19:33
FatCat
Потому что:
Цитата (wolfandman @ 20.03.2015 - 10:14) |
Я юзаю фреймворк, в нём есть маршрутизатор встроенный, там правила валидируются с помощью PCRE. |
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.