4

我正在使用 MVC,我想验证电话号码

我写了这堂课:

public class StduentValidator : AbstractValidator<graduandModel>
{
    public StduentValidator(ILocalizationService localizationService)
    {
        RuleFor(x => x.phone).NotEmpty().WithMessage(localizationService.GetResource("Hire.HireItem.Fields.phone.Required"));
    }
}

我怎样才能验证这个类中的电话号码?

我可以使用以下内容吗?

RuleFor(x => x.phone).SetValidator(....)

如果是这样我该如何使用它?

4

3 回答 3

5

您是否考虑过在模型中使用DataAnnotations

像这样的东西:

[DataType(DataType.PhoneNumber, ErrorMessage = "Invalid Phone Number")]
public string PhoneNumber { get; set; }

另一种解决方案是使用正则表达式:

[DisplayName("Phone number")]
[Required(ErrorMessage = "Phone number is required")]
[RegularExpression(@"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}", ErrorMessage = "Invalid phone number")]
于 2012-10-16T06:14:50.810 回答
2

你需要正则表达式。

试试这个例子

正则表达式库

然后您可以在数据注释中使用正则表达式模式,如下所示:

[RegularExpression(@"^[2-9]\d{2}-\d{3}-\d{4}$", ErrorMessage = "Please enter a valid phone number.")]
public string PhoneNumber { get; set; }
于 2012-10-16T06:16:31.843 回答
1

下面的代码示例使用 fluent 验证进行电话号码验证

  class StudentCommandValidation :  AbstractValidator<StudentCommand>
{
    public StudentCommandValidation()
    {
        RuleFor(p => p.PhoneNumber)
       .NotEmpty()
       .NotNull().WithMessage("Phone Number is required.")
       .MinimumLength(10).WithMessage("PhoneNumber must not be less than 10 characters.")
       .MaximumLength(20).WithMessage("PhoneNumber must not exceed 50 characters.")
       .Matches(new Regex(@"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}")).WithMessage("PhoneNumber not valid");
    }
}
于 2022-01-11T12:57:04.350 回答