preg_match для поиска двухзначных чисел выше 14

#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})$