首页 > 解决方案 > 验证属性时将两个正则表达式合二为一

问题描述

我有两个正则表达式。

  1. [RegularExpression(@".*[^ ].*", ErrorMessage ="Something")] 验证仅包含空格的字符串(不是任何其他字符,例如:)" ".length = 7
  2. [RegularExpression(@"^[^~!@#$%&*]+$", ErrorMessage = "something")] 验证包含~!@#$%&*特殊字符的字符串。

我怎样才能将两个正则表达式合二为一,因为在 asp.net mvc 中不允许重复正则表达式注释。

标签: c#regexasp.net-mvcmodel-validation

解决方案


您可以使用

^[^~!@#$%&*]*[^~!@#$%&*\s][^~!@#$%&*]*$

查看正则表达式演示

细节

  • ^- 字符串的开始
  • [^~!@#$%&*]*- 0+ 字符而不是~!@#$%&*列表中的字符
  • [^~!@#$%&*\s]- 列表中的字符以外的字符~!@#$%&*和空格
  • [^~!@#$%&*]*- 0+ 字符而不是~!@#$%&*列表中的字符
  • $- 字符串结束。

注意:为了还允许空字符串,您需要在可选组内的锚点之间包装模式:^(?:[^~!@#$%&*]*[^~!@#$%&*\s][^~!@#$%&*]*)?$.


推荐阅读