package { /* Authored by Rich Tretola */ import mx.validators.Validator; import mx.validators.ValidationResult; public class professional_flex_code_15_PasswordValidator extends Validator { private var results:Array; public function professional_flex_code_15_PasswordValidator() { super(); } // Override the doValidation() method. override protected function doValidation(value:Object):Array { results = []; // Call super's doValidation(). results = super.doValidation(value); // Return if super's doValidation contains errors (required would be an example). if (results.length > 0){ return results; } // Check for min length var dataString:String = String(value); if (dataString.length < 6){ results.push(new ValidationResult(true, null, "Short", "Password must be at least 6 characters.")); return results; } // Check for max length (this can be set in the text component's maxChars property). if (dataString.length > 10){ results.push(new ValidationResult(true, null, "Long", "Password must be no larger than 10 characters.")); return results; } // Check for at least 1 upper case letter. if (dataString.search("[A-Z]")<0) { results.push(new ValidationResult(true, null, "Upper", "Passwords must contain at least one upper case letter.")); return results; } // Check for at least 1 lower case letter. if (dataString.search("[a-z]")<0) { results.push(new ValidationResult(true, null, "Lower", "Passwords must contain at lease one lower case letter.")); return results; } // Check for at least 1 number. if (dataString.search("[0-9]")<0) { results.push(new ValidationResult(true, null, "Number", "Passwords must contain at least one number.")); return results; } return results; } } }