如何在验证字段的C#模型中使用正则表达式防止名称和姓氏的字符重复

时间:2019-05-24 17:08:14

标签: c# regex model-view-controller

在以下情况下,我试图在表模型上放置正则表达式以验证同一表单字段中的名称和姓氏:

第一个名字必须至少3个字符。

第二个姓氏必须至少2个字符。

第三个名字不能是重复字母,例如aaaaa bbbb cccc。

因此,我尝试在下面进行解码,但均未成功:

    [Display(Name = "Nome"), Required(ErrorMessage = "Campo Obrigatório", AllowEmptyStrings = false)]
    [StringLength(150, ErrorMessage = "O {0} deve ter no mínimo {2} letras e no máximo {1} letras.", MinimumLength = 1)]
    [RegularExpression(@"^([a-zA-ZÁ-ú\b]+(?!([a-zA-ZÁ-ú\b]*?[a-zA-ZÁ-ú\b]\3.*?))+ [a-zA-ZÁ-ú\b]+(?!([a-zA-ZÁ-ú\b]*?[a-zA-ZÁ-ú\b]\3.*?)))*$", ErrorMessage = "Não são permitidos caracteres especiais.")]
    public string Name { get; set; }

我无法避免在姓氏上重复。 :(

1 个答案:

答案 0 :(得分:1)

使用此\w{3,} \w{2,} (?:(\w)(?!\1))+


说明

\ w {3,} -最小宽度为3且最大范围为无限制的任何单词

空格

\ w {2,} -最小宽度为2且最大范围为无限制的任何单词

空格

(?:-非捕获组的开始(仅出现在结果中)

(\ w)-仅捕获一个单词的组

(?!\ 1)-下一个单词不能与最后一个单词相同(负向前)

-非捕获组的结尾

希望它会有所帮助:)