регулярное выражение аннотации данных mvc

Я только начал возиться с регулярными выражениями, но в основном с этим (который я нашел в Интернете, кстати) предполагается, что пароль должен быть между 8-10, но всякий раз, когда я пробую его и ввожу правильную длину, он все еще показывает сообщение об ошибке. Любые идеи? мне также нужно включить 1 строчную, 1 прописную и 1 цифру при проверке.

public class password : IValidatableObject
{
    [Required]
    [RegularExpression("(?=^.{8,10}$)", ErrorMessage = "Password is invalid.")]
    public string ConfirmPWD { get; set; }
    [Required(ErrorMessage="Confirm Password field is required.")]
    public string ConfirmPWD { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (ConfirmPWD != ConfirmPWD )
            yield return new ValidationResult("Not identical.");
    }
}

person gdubs    schedule 21.06.2011    source источник


Ответы (2)


Вы, вероятно, хотите что-то вроде этого:

[RegularExpression(@"^.{8,10}$", ErrorMessage = "Must be between 8 and 10 characters.")]

person Waylon Flinn    schedule 21.06.2011

попробуйте просто ".{8,10}". кроме того, более конкретное сообщение об ошибке может быть полезно для ваших пользователей.

Редактировать: если подумать, почему бы просто не использовать StringLengthAttribute для этого...

[StringLength(10, MinLength = 8, ErrorMessage = "Password must be between 8 and 10 characters")]

затем вы можете использовать регулярное выражение для своих более конкретных правил, таких как требуемая сложность.

person David Wick    schedule 21.06.2011
comment
ну, у меня есть 2-3 других, которые мне нужно добавить, мне просто добавить несколько регулярных выражений? например. 1 для пароля должен иметь по крайней мере 1 символ в верхнем регистре, 1 для пароля должен иметь по крайней мере 1 числовой символ и т. д. Я чувствую, что мне нужно выполнить некоторую неисчислимую проверку, чтобы проверить его, я просто не знаю, как это сделать. - person gdubs; 22.06.2011
comment
это может работать с длиной строки, но в остальном, например, 1 верхний регистр, 1 нижний регистр, 1 число должны иметь определенные сообщения, каждый, если я помещу все это в одно регулярное выражение, это просто даст мне одно сообщение об ошибке, которое указано на этом строка регулярного выражения. - person gdubs; 22.06.2011