function validateEmail($value) { //not too long to fit in the property? $error = $this->validateString($value); if ($error) return $error; if ($value === null) return null; //requires @ with at least one character before, checks the domain name //not allowing address literals nor comments if (!preg_match('/^.+' //you may use '/^(?:"(?:\\\\.|[^"])*"|[^ ]+)' if you do not want to allow whitespace outside double quoted . "@[\w0-9\-.]+\.\w{2,4}$/" //allows subdomains and numers. "@[\w-]+(\.\w{2,3})*\.\w{2,4} |