- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 RegexValidator 验证电子邮件,例如
[RegexValidator(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$")]
效果很好,现在我想包装属性,以便可以将其存储在一个地方:
public class EmailAttribute : RegexValidator
{
public EmailAttribute()
: base(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$")
{
}
}
所以我可以使用
[EMail]
但是它不起作用,为什么?
最佳答案
您不应使用正则表达式验证电子邮件地址。
改为使用此属性:
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public sealed class EmailAddressAttribute : DataTypeAttribute {
public EmailAddressAttribute() : base(DataType.EmailAddress) { ErrorMessage = "Please enter a valid email address"; }
public override bool IsValid(object value) {
if (value == null) return true;
MailAddress address;
try {
address = new MailAddress(value.ToString());
} catch (FormatException) { return false; }
return address.Host.IndexOf('.') > 0; //Email address domain names do not need a ., but in practice, they do.
}
}
如果您想要对 ASP.Net MVC 进行客户端验证,请使用此适配器:
public class EmailAddressValidator : DataAnnotationsModelValidator<EmailAddressAttribute> {
public EmailAddressValidator(ModelMetadata metadata, ControllerContext context, EmailAddressAttribute attribute) : base(metadata, context, attribute) { }
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() {
yield return new ModelClientValidationRegexRule(Attribute.ErrorMessage,
@".+@.+\..+"); //Feel free to use a bigger regex
}
}
然后这样注册:
DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(EmailAddressAttribute), typeof(EmailAddressValidator));
关于c# - RegexValidator 验证电子邮件,制作标准属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2509360/
我一直在一个领域使用 Django 和 RegexValidator,我只想以 DDDDD 或 DDDDD-DDDD 的格式保存有效的美国邮政编码。 我在模型中设置了我的变量如下: zip = mod
为什么 RegexValidator 没有显示该消息?看来我发布了太多代码......这是我的观点.py: from polls.forms import ContactForm from djang
我为我的用户名字段添加了自定义验证, 我的正则表达式是 ^[a-zA-Z0-9_]{1,15}$ 我需要验证长度为 1-15 的 a-z、0-9 和 _(下划线) . def validate_use
我想使用 RegexValidator 验证电子邮件,例如 [RegexValidator(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-z
这是我的代码: class Location(models.Model): alphaSpaces = RegexValidator(r'^[a-zA-Z]+$', 'Only letters
如何在 RegexValidator 中实现特殊表达式? 表单.py: class MyRegistrationForm(forms.ModelForm): alphanumeric = Re
我正在为颜色构建整数数组字段。 我尝试使用 CommaSeparatedIntegerField 但它已被弃用 CommaSeparatedIntegerField has been deprecat
这是我的 models.py 中的代码。 from django.db import models class Person(models.Model): contactNumber = m
对于输入到 Django CharField 中的所有字符,我想只允许字符 0-9。 当我将 RegexValidator() 与 regex = r'[^0-9]' 一起使用时。我可以在字段中输入除
我是一名优秀的程序员,十分优秀!