io le espressioni regolari le uso per determinati campi dei quali conosco il contenuto (password, username, mail, cap ecc..) però dei campi generici di testo eseguo solo una pulizia dei tag o con html_entities o con strip_tags... e poi un bel mysql_escape_string... tu crei espressioni regolari anche per campi che possono avere i valori più disparati (nel caso di un lungo campo di testo non sono anche lente le operzioni di confronto tra stringhe?)
ritornando alle captcha mi sa che proverò il tuo metodo!