Regex - сопоставить все, кроме определенной строки
Мне нужно регулярное выражение (будет использоваться в маршрутизации ZF2, я полагаю, что он использует preg_match из php), которое соответствует чему-либо, кроме конкретной строки.
Например: мне нужно сопоставить что угодно, кроме «красного», «зеленого» или «синего».
В настоящее время у меня есть регулярное выражение:
^(?!red|green|blue).*$
test -> match (correct)
testred -> match (correct)
red -> doesn't match (correct)
redtest -> doesn't match (incorrect)
В последнем случае регулярное выражение ведет себя не так, как я хочу. Он должен соответствовать «redtest», потому что «redtest» - нет («red», «green» или «blue»).
Любые идеи о том, как исправить регулярное выражение?