<?php

class CM_FormField_Email extends CM_FormField_Text {

	public function __construct($name = 'email') {
		parent::__construct($name);
	}

	public function validate($userInput) {
		$userInput = parent::validate($userInput);

		if (false === filter_var($userInput, FILTER_VALIDATE_EMAIL)) {
			throw new CM_Exception_FormFieldValidation('Invalid email address');
		}

		return $userInput;
	}
}

<?php

class CM_FormField_Email extends CM_FormField_Text {

	public function __construct($name = 'email') {
		parent::__construct($name);
	}

	public function validate($userInput) {
		$userInput = parent::validate($userInput);

		if (!preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i", $userInput)) {
			throw new CM_Exception_FormFieldValidation('Invalid email address');
		}

		return $userInput;
	}
}

--- 
+++ 
@@ -9,7 +9,7 @@
 	public function validate($userInput) {
 		$userInput = parent::validate($userInput);
 
-		if (!preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i", $userInput)) {
+		if (false === filter_var($userInput, FILTER_VALIDATE_EMAIL)) {
 			throw new CM_Exception_FormFieldValidation('Invalid email address');
 		}
 
Fix email validation; Use php's filter_var() for email field validation
