Regulární výraz ^[^\[\]]*$

Ať zkouším a hledám, jak zkouším a hledám, nemůžu přijít na to, jak regulárním výrazem (např. ve funkci eregi) vyjádřit jakýkoli znak kromě hranatých závorek [].

eregi( "^[^\[\]]+$" , "test" ); # Výsledek vždy false, ať dám jakýkoli řetězec na místo "test"

Podle dalších pokusů se mi zdá, že automat regulárního výrazu interpretuje speciální znaky \] a \[ jako platné závorky.

Proč? Co je špatně?
Ahoj, nevím, jestli ti to pomůže, ale jestli děláš přes správce souborů, tak zkus dát lomítka 2x.
Takže \\[ \\]
Nejsem si vědom, že by takový regulární výraz neměl fungovat.

Ale k řešení: nepoužívej ereg(), která je mimo jiné deprecated, ale preg_match(). Funkce ereg() je zbytečně pomalá a navíc vyžaduje (ne příliš používané) posixové regulární výrazy (pro ilustraci viz http://www.regularnivyrazy.info/shrnuti-syntaxe.html). V pcre s podobným regulární výrazem nebudeš mít problém.
preg_match("/^[^\[\]]+$/i", "test")