首页 > 解决方案 > 正则表达式在正则表达式注释中不起作用

问题描述

我在 ViewModel 中使用正则表达式注释应用了客户端验证。

验证是GroupName应该TPDC_DMK_ 开头,至少还有一个字母

[Required(ErrorMessage = "Group Name is required")]
        [RegularExpression("^(TPDC_|DMK_)+", ErrorMessage = "Group Name should begin with TPDC_ or DMK_")]
        public string GroupName { get; set; }

但是使用的正则表达式没有按预期工作。

标签: .netregexasp.net-mvc

解决方案


你不需要用交替重复这个组。如果您希望以下字母为 AZ,则可以在其后添加一个字符类。关闭组后可能会移动下划线。

^(?:TPDC|DMK)_[A-Z]

解释

  • ^字符串的开始
  • (?:非捕获组
    • TPDC|DMK匹配 TPDC 或 DMK
  • )关闭组
  • _[A-Z]匹配一个下划线后跟一个字符 AZ

正则表达式演示

或者,如果您想允许使用任何语言的任何字母,您可以使用它\p{L}来代替

^(?:TPDC|DMK)_\p{L}

推荐阅读