首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何通过单一的重新分配来验证电子邮件和电话号码?

我如何通过单一的重新分配来验证电子邮件和电话号码?
EN

Stack Overflow用户
提问于 2017-03-31 04:00:34
回答 1查看 68关注 0票数 0

那么,我有两个单独的确认电子邮件和电话号码的判读。喜欢

代码语言:javascript
复制
email = "^\w+\@([\da-zA-Z\-]{1,}\.){1,}[\da-zA-Z-]{2,6}" 

代码语言:javascript
复制
phone = "^[2-9]\d{2}-\d{3}-\d{4}"

但是,我想输入一个字段,它可以是电子邮件和电话。我必须确认他们。我试过在这两种雌雄同体之间或者在这两种类型之间使用一种\x++操作符,但没有起作用。

代码语言:javascript
复制
[Required]
[MaxLength(50)]
[RegularExpression(@"^\w+\@([\da-zA-Z\-]{1,}\.){1,}[\da-zA-Z-]{2,6} || ^[2-9]\d{2}-\d{3}-\d{4}$", ErrorMessage = "Invalid Phone number Email Address")]
[Display(Name = "Phone number or Email")]        
[System.Web.Mvc.Remote("IsUserExists", "Account", HttpMethod = "POST", ErrorMessage = "This Phone number or Email already exists")]
public string MobOrEmail { get; set; } 

因此,我需要一个适当的regex,可以同时验证电子邮件或电话号码。否则他们之间的一次或一次行动将是完美的,我非常需要它。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-31 04:27:47

您需要一个| (管道)字符(而不是2),并且不需要空格。它应该是

代码语言:javascript
复制
[RegularExpression(@"^\w+\@([\da-zA-Z\-]{1,}\.){1,}[\da-zA-Z-]{2,6}|[2-9]\d{2}-\d{3}-\d{4}", ErrorMessage = "...")

参考雷杰斯

请注意,您的电子邮件regex不是很强。jquery.validate.js使用的方法是

代码语言:javascript
复制
/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$

为了使模型中的内容更容易阅读和重用,您可以创建扩展ReqularExpressionAttribute的自己的属性。

代码语言:javascript
复制
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
public class EmailOrPhoneAttribute : RegularExpressionAttribute
{

    public EmailOrPhoneAttribute () : base(@"^\w+\@([\da-zA-Z\-]...etc")
    {
        // Add default error message
        ErrorMessage = "Invalid Phone number Email Address";
    }
}

并在global.asax.cs中注册

代码语言:javascript
复制
protected void Application_Start()
{
    ....
    DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailOrPhoneAttribute), typeof(RegularExpressionAttributeAdapter));
    ....
}

然后在模型中

代码语言:javascript
复制
[EmailOrPhone]
public string MobOrEmail { get; set; }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43132216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档