public override void Validate(string value)
 {
     base.Validate(value);
     if (MinLength != NoLengthRestriction && value.Length < MinLength)
     {
         throw new FormatException(String.Format("Value string is too short; expected at least {0} characters.",
                                                 MinLength));
     }
     if (MaxLength != NoLengthRestriction && value.Length > MaxLength)
     {
         throw new FormatException(String.Format("Value string too long; expected at most {0} characters.",
                                                 MaxLength));
     }
     if (RestrictedChars && Player.ContainsIllegalChars(value))
     {
         throw new FormatException(String.Format("Value contains restricted characters."));
     }
     if (Regex != null && !Regex.IsMatch(value))
     {
         throw new FormatException(String.Format("Value does not match the expected format: /{0}/.",
                                                 Regex));
     }
 }