2

Регулярное выражение (RegExp): строка, если не содержит слово

Регулярное выражение «вся строка, если нет слова» или «все строки без слова» или «все строки не содержащие слово».

Сказать просто, сложно объяснить это «регулярным выражениям».

У меня получилось так:

//нужно проверить строку на содержание слова "notallowed"
$regexp = '/(?(?=.*\bnotallowed\b.*)^$|^.*$)/';

$str1 = 'this is string with word "notallowed"';
$str2 = 'this is another string';

var_dump(preg_match($regexp, $str1, $matches));
var_dump($matches);

var_dump(preg_match($regexp, $str2, $matches));
var_dump($matches);

Получим такой результат:

0
array
  empty
1
array
  0 => string 'this is another string' (length=22)

Регулярное выражение означает: если строка попадает под шаблон ?=.*\bnotallowed\b.* (любые символы, между которыми встречается \bnotallowed\b), то для выборки используется шаблон ^$(пустая строка), иначе ^.*$(вся строка). Или по-человечески, если строка содержит слово notallowed, то возвращаем пустую строку, иначе все символы без изменений.

Как-то так.

2 Comments

  1. спасибо, надо будет разобрать синтаксис
    наступившем успехов

  2. Респект!
    Оригинальное решение

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *