#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])*$
^ соответствует началу строки, а $ соответствует концу, гарантируя, что вы проверяете всю строку. Она будет соответствовать одной цифре плюс ноль или более экземпляров двоеточия, за которым следует цифра после нее.