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

C# 如何在验证字段的C模型中使用正则表达式防止名称和姓氏上的字符重复,c#,regex,model-view-controller,C#,Regex,Model View Controller,我试图在我的表模型上放置一个正则表达式,以验证同一表单字段中的名称和姓氏,当: 第一个名称必须至少为3个字符 第二姓氏必须至少为2个字符 第三个名字不能像aaaaa bbbb cccc那样重复 因此,我尝试了下面的de代码,但没有成功: [Display(Name = "Nome"), Required(ErrorMessage = "Campo Obrigatório", AllowEmptyStrings = false)] [StringLength(150, ErrorM

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

第一个名称必须至少为3个字符

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

第三个名字不能像aaaaa bbbb cccc那样重复

因此,我尝试了下面的de代码,但没有成功:

    [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; }
我无法避免在姓氏上重复

使用这个\w{3,}\w{2,}?:\w\一,+

说明:

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

空间

\w{2,}-最小宽度为2,最大宽度为无限的任何字

空间

?:-非捕获组的开始仅用于不显示在结果上

\w-一个只捕获一个单词的组

\1-下一个单词不能与上一个单词相同-否定前瞻

-非捕获组结束


希望有帮助:

这是一本有趣的读物,适合任何试图验证姓名的人。。。你的问题有很多解释:1名字应该只有三个字,还是只有第一个名字和姓氏?2你所说的不能重复的字母是什么意思?这是否意味着整个单词不应该由一个字母组成,或者名称中不应该有连续的类似字母?对于这样的问题,如果条件不明确,如果你能提供一些你想要的输入和输出样本,这对任何想回答的人都会很有帮助。@Jamie Fenrirdigtallt我很想建议你把那篇文章作为答案提交。@EdPlunkett我决定在读最后一行时保留对那篇文章的引用,下一次,当人们提出一个天才的想法时,比如一个包含名字和姓氏列的数据库表时,请参考这篇文章。才华横溢,如此相关。