Allora innanzitutto non usare ereg (obsolete) e usa le Perl Compatible Regular Expressions (preg_match, preg_replace).
Poi all'interno di una character class (le parentesi quadre) il trattino ha si un significato particolare, ma se lo vuoi usare letteralmente non lo devi precedere con un backslash ma lo devi mettere come primo o come ultimo carattere, es: [-A-Z0-9]
Neanche il punto va quotato con un backslash se e' all'interno di una character class.
Poi, roba come [@]{1} si scrive semplicemente @, idem per il punto [\.]{1} -> \.
Se vuoi abbreviare, invece di [A-Za-z] puoi scrivere solo [a-z] usando il modificatore 'i' (case insensitive) delle preg (vedi manuale di preg_match e funzioni simili).
Per informazioni dettagliate sulle regexp, vai su www.regular-espressions.info