Как мне проверить, соответствует ли строка maches integer:integer с preg_match?

#php #regex

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

Вопрос:

Мне нужно регулярное выражение, чтобы проверить, соответствует ли строка целому числу:integer (например: 9:4). Я пытался

 preg_match("[0-9]:[0-9]", $str)
  

но это неверно.

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

1. Что означает, но это неверно ? можете ли вы показать образцы с ожидаемым результатом? Подсказка, возможно, ^ начало строки a и $ и строки отсутствует. попробуйте preg_match("^[0-9]:[0-9]$", $str)

2. Предупреждение: preg_match(): Неизвестный модификатор ‘:’

3. Я попробовал вашу версию и получаю предупреждение: preg_match(): нет конечного разделителя ‘^’

4. preg_match("/[0-9]:[0-9]/", $str) — вы пренебрегли «разделителями», поэтому он использовал [ — что не очень хорошо работает.

5. извините, должно быть preg_match("/^[0-9]:[0-9]$/", $str) . Также прочитайте документ: php.net/manual/de/function.preg-match.php

Ответ №1:

Вы должны отметить начало и конец регулярного выражения, обычно с / .

Попробуйте это:

 preg_match("/[0-9]:[0-9]/", $str)
  

Один совет: вы можете использовать d вместо [0-9] .

Если вы хотите убедиться, что строка только содержит digit:digit, используйте ^ в качестве маркера для начала строки и $ для конца:

 preg_match("/^[0-9]:[0-9]$/", $str)
  

Кроме того, добавьте для сопоставления числа, состоящие более чем из одной цифры:

 preg_match("/^[0-9] :[0-9] $/", $str)
  

Ответ №2:

 ^[0-9](:[0-9])*$
  

^ соответствует началу строки, а $ соответствует концу, гарантируя, что вы проверяете всю строку. Она будет соответствовать одной цифре плюс ноль или более экземпляров двоеточия, за которым следует цифра после нее.