Открыть меню    

Работаем с регулярными выражениями: preg_match() и preg_match_all() на простых примерах

preg_match()

Функция preg_match() возвращает количество найденных соответствий. Это может быть 0 (совпадения не найдены) и 1, поскольку preg_match() прекращает свою работу после первого найденного совпадения.В функцию передается три аргумента: регулярное выражение, строка для поиска и переменная для сохранения совпадений

Проверяем на пробелы (пробелы запрещаем):

PHP

    if (preg_match('/\s/', $check)) {
      $errors[] = 'Слово не должно содержать пробелы';
    }
    // если есть пробелы, вернет 1, и, соответственно,
    // сработает условие

Определяем, содержит ли переменная одну строчную или одну заглавную букву (буквы обязательны):

PHP

$pattern = '/(?=.*[a-z])(?=.*[A-Z])/';
if (!preg_match($pattern, $check)) {
    $errors[] = 'Слово должно содержать одну строчную или одну заглавную букву';
}
    // если буквы отсутствуют вернет 0 (не TRUE), и, соответственно,
    // сработает условие

preg_match_all()

Функция preg_match_all() возвращает количество совпадений регулярного выражения (может быть нулем) либо FALSE, если во время выполнения возникли какие-либо ошибки. В функцию передается три аргумента: регулярное выражение, строка для поиска и переменная для сохранения совпадений.

Проверяем на наличие в слове как минимум трех цифр (переменная для сохранения совпадений - $matches - не используется):

PHP

      $pattern = '/\d/';
      $check = "Экалыверды";
      $minimumNumbers = 3;
      $found = preg_match_all($pattern, $check, $matches);
      if ($found < $minimumNumbers) {
        $errors[] = "Слово должно содержать как минимум $minimumNumbers цифры.";
      }

При любом несоответствии, для всех трех случаев, заносим соответствующее предупреждение в массив $errors.

Комментарии к статье

Добавить комментарий к сниппету