Регулярное выражение с обнаружением небольшого числа

#php #regex #preg-match

#php #регулярное выражение #preg-match

Вопрос:

Мне это нужно для обнаружения чего-то вроде

STEAM_numberhere от 0 до 5: здесь только 0 или 1: любое число

PHP preg_match

Спасибо за вашу помощь!

STEAM_X:Y:Z

X должно быть 0, 1, 2, 3, 4 или 5

Y должно быть либо 0, либо 1

Z может быть любым числом, просто не может содержать никакого текста.

Допустимо: STEAM_0:1:1958281

Недопустимо: STEAM_9:4:1912tg

Комментарии:

1. Пожалуйста, предоставьте более подробную информацию о том, что выражение должно перехватывать, а что нет

2. ну, ему нужно убедиться, что формат чем-то похож на STEAM_0: 1: 1928519, поэтому ему придется проверить, есть ли в нем STEAM_[число от 0 до 5]: [0 или 1]: [любое число здесь]

3. Всегда ли данные будут в этом формате? Вам нужно обнаружить строку этого формата внутри произвольных данных или вам нужна функция для проверки строки этого формата?

4. Мне нужно убедиться, что STEAM_ является стартовым, я отредактировал основное сообщение, чтобы показать допустимую и недопустимую запись. Мне не нужно определять определенное число в строке, мне просто нужно убедиться, что это правильная запись, чтобы скрипт мог продолжить работу.

5. Что вы уже пробовали? Или вы просто ожидаете, что мы напишем регулярное выражение для вас, поскольку вы не собираетесь искать синтаксис регулярных выражений в руководстве? Если вы добавите это в свой код, но понятия не имеете, как это работает, оно станет неуправляемым. Итак, либо изучайте регулярные выражения, либо прибегайте к строковым функциям (которые будут работать в данном конкретном случае).

Ответ №1:

 preg_match('/^STEAM_[0-5]:[01]:[0-9] $/', $input)
  

Ответ №2:

 preg_match('/^STEAM_[0-5]:[0-1]:[0-9] $/', $x)
  

Ответ №3:

Как насчет STEAM_[0-5]:[0-1]:[0-9]

Ответ №4:

 preg_match("#STEAM_[0-5]{1}:[0-1]{1}:([0-9] )#", $string, $matches);
  

Что-то вроде этого, не тестировал.

Протестировано:

 $string = "STEAM_0:1:1928519 STEAM_1:5:19a28519 STEAM_18:1:1928519x";

preg_match("#STEAM_[0-5]{1}:[0-1]{1}:([0-9] )#", $string, $matches);

echo($matches[0]); //STEAM_0:1:1928519
  

Комментарии:

1. Будет соответствовать параметру team_0:0:0b, но не STEAM_0:0:12

2. {1} Не нужны, скобки тоже не нужны.

3. Поскольку существует только один символ, да.