Снова об отрицании в регулярном выражении

29.12.2011 17:53 / Артём Волк / 285 просмотров / ...

Реализовать условие «строка не содержит подстроку» напрямую в регулярном выражении нельзя, но можно воспользоваться т.н. negative lookahead (которые уже были описаны в предыдущем сниппете):

<pre>
<?php
	$pattern = "/^(?!(.*?)HTC)/"; // Совпадение будет со строкой не содержащей 'HTC'
	preg_match($pattern, "HTC A310 Explorer", $matches);
	print_r($matches);
	preg_match($pattern, "Нетбук Acer Aspire 3750", $matches);
	print_r($matches);
?>
</pre>

Другой вариант реализации предложен на stackoverflow.com.