#php #regex #preg-match
#php #регулярное выражение #preg-match
Вопрос:
Я использую приведенный ниже код для идентификации текста или ничего, за которым следуют 2 или 3-значные числа
preg_match("/^[0-9]{2,3}$/",trim($textMessage),$result)
Это работает нормально. Но мне нужно найти только цифру выше 14. Но приведенный выше код совпадает с самим 10.
Пожалуйста, помогите. Заранее спасибо.
Комментарии:
1. Почему бы просто не проверить это позже? Пытаться делать все с помощью регулярных выражений, если это возможно (в данном случае это так), бессмысленно, когда вы могли бы использовать это время для более полезных дел.
2. не рекомендуется делать это с помощью регулярных выражений, эта плохая логика может побудить вас искать способы, если число простое или без использования регулярных выражений :-/
Ответ №1:
Регулярное выражение на самом деле не должно использоваться для подобных сравнений — оно больше для сопоставления с шаблоном. Итак, оставьте ваше регулярное выражение таким, какое оно есть, и протестируйте $result
:
<?php
$textMessage = '123';
preg_match("/^[0-9]{2,3}$/",trim($textMessage),$result);
print_r($result);
if($result[0] > 14)
{
// do something here
}
?>
Ответ №2:
Просто. вы переключаете свою числовую часть с
[0-9]{2,3}
к этому:
(1[5-9])|([2-9][0-9])|([1-9][0-9]{2})
Комментарии:
1. Это работает, но я не могу отделаться от мысли, что регулярные выражения — неподходящий инструмент для этого.
2. Я знаю, что это неподходящий инструмент для этого. Я надеялся, что @Coder поймет это, увидев, какое регулярное выражение вам нужно для этого создать, но пожмет плечами , если он этим доволен..
3. Вы, вероятно, хотите
[1-9][0-9]{2}
, не{2,3}
. Вы также можете удалить 3 группы захвата, но не забудьте^
…$
якоря:^(1[5-9]|[2-9][0-9]|[1-9][0-9]{2})$