Vorrei sfruttare sempre questo post per chiedere un'altra cosa se è possibile...
sto creando la funzione che mi controlla il formato della email durante la registrazione al sito web. ho usato questa espressione regolare nella funzione preg_metch e funziona a dovere se non per la fine... cioè alla fine, ovvero nell'estensione del dominio (.it, .com ecc...) questa espressione regolare da la possibilità di inserire tutti i caratteri speciali che uno vuole e che io non vorrei far inserire... sapete aiutarmi? grazie mille!

codice:
preg_match('/^[a-zA-Z0-9][a-zA-Z0-9\.\_]{1,100}@[a-zA-Z0-9]{1,100}\.[a-zA-Z0-9\.]{0,20}/', $email);
Spiegandola brevemente questa funzione regolare dovrebbe all'inizio porre l'obbligo di usare uno tra i caratteri a-z, A-Z o 0-9 poi do anche la possibilità di usare il . e il trattino basso (anche se vorrei, se fosse possibile, impedire anche che sia il . che il _ basso possano essere inseriti immediatamente prima della @). Subito dopo la @ do la possibilità di scrivere con i caratteri a-z, A-Z e 0-9 e infine dopo il punto dovrei dare la possibilità di usare solo i caratteri che vanno da a-z, A-Z, 0-9 e il . ma se digito il ? o qualsiasi altro carattere speciale la funzione mi restituisce true lo stesso... come mai? Grazie