【问题标题】:Validate both email id and phone number in one text field in mvc 4在 mvc 4 的一个文本字段中验证电子邮件 ID 和电话号码
【发布时间】:2015-09-22 07:07:11
【问题描述】:

我有一个注册表单。在表单中,我需要在同一个文本框字段中验证电子邮件 ID 和电话号码。在 MVC 4 中有可能吗?

示例:

【问题讨论】:

  • 您需要编写自己的验证属性。
  • 检查条目是否是有效的电子邮件地址,如果是则使用它,如果不是则检查它是否是有效的电话号码。不过,您必须采用自己的逻辑来实现这一目标。
  • 感谢@stephen 我得到了这个想法并成功实施

标签: c# jquery validation asp.net-mvc-4


【解决方案1】:

最后我实现了自定义验证,以在一个文本框中实现手机号码和电子邮件 ID 验证。

示例代码

public class customvalidation : ValidationAttribute
    {
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            if (value != null)
            {
                string email = value.ToString();
                if (Regex.IsMatch(email, @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", RegexOptions.IgnoreCase))
                {
                    return ValidationResult.Success;
                }
                else if (Regex.IsMatch(email, @"(\d*-)?\d{10}", RegexOptions.IgnoreCase))
                {
                    return ValidationResult.Success;
                }
                else
                {
                    return new ValidationResult("Invalid EmailID or Mobile Number");
                }

            }
            else
            {
                return new ValidationResult("" + validationContext.DisplayName + "is required");
            }
            //return base.IsValid(value, validationContext);
        }

    }

【讨论】:

    【解决方案2】:

    您可以对文本框中的第一个按键事件执行类似操作,您可以检查它是以数字还是字符开头,根据结果您可以验证其电子邮件 ID 还是电话号码

    $("#TextboxID").keyup(function(){
    var value=$("#TextboxID").val();
    //Regex for mobile number
    var phoneNumber = ^[0-9]{1};
    
    //Regex for Email Id
    var Email= ^[a-zA-Z]{1};
    
    //Now in if condition you can check whether it begins with a number or a character.
    }); 
    

    【讨论】:

      【解决方案3】:

      我在流畅的验证中使用正则表达式这样做,我认为你可以这样做:

          public UserLoginValidator()
          {
              RuleFor(user => user.EmailOrPhone).NotNull().NotEmpty().WithMessage("Bu alan boş bırakılamaz.");
              RuleFor(user => user.EmailOrPhone).Must(IsValidEmailOrTelephone).WithMessage("Format geçerli değil.");
      
              RuleFor(x => x.Password).NotNull().NotEmpty();
          }
          bool IsValidEmailOrTelephone(string emailOrPhone)
          {
              bool phone = Regex.IsMatch(emailOrPhone, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);
              bool email = Regex.IsMatch(emailOrPhone, @"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}");
              return phone || email;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-22
        • 2018-05-05
        • 1970-01-01
        • 2014-04-25
        • 2020-04-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多