我需要验证我的c#模型类。
[Required(ErrorMessage = "Comma Separated String Required")]
[RegularExpression(@"", ErrorMessage = "Invalid Comma Separated String.")]
[RegularExpression(@"", ErrorMessage = "Duplicate Code.")]
public string CommaSeparatedString { get; set; }
我刚刚尝试了以下正则表达式,但不适用于我。
((\s+)??(\d[a-z]|[a-z]\d|[a-z]),?)+?$
就我而言,CommaSeparatedString
可以是:
ASAEW1,ASAEW2,ASA,S4,ASAEW5,ASAEW6,ASAEW7 - Valid
ASAEW1,ASAEW2,ASA,S4,ASAEW5,ASAEW6,ASAEW7,ASAEW6 - Invalid - Duplicate ASAEW6
ASAEW1,ASAEW2,ASA,S4,ASAEW5,ASAEW6,ASAEW7, - Invalid - Comma at end
ASAEW1,ASAEW2,,ASA,S4,ASAEW5,ASAEW6,ASAEW7 - Invalid - No value between 2,3 comma
上面的要求应该发生。有什么可能的方法来检查逗号分隔的字符串中的重复项?如果'Duplicates code'
由重复项组成,我需要显示CommaSeparatedString
错误消息。我该怎么办?
^((([A-Z]+\d*)(?!.*,\3\b)),)*[A-Z]+\d*$
因此可视化:逐步:
^(((
-起始字符串ancor,后跟三个捕获组][A-Z]+\d*
-第三个捕获组必须以大写字母开头(至少一个),后面跟尽可能多的数字](?!.*,\3\b)
-负向查找,以确保先前找到的模式将),)*
-关闭组2,后跟逗号,然后关闭组1,然后必须尽可能多地发生*
][A-Z]+\d*
-最后一位是重复我们在第3组中寻找的相同模式$
-结束字符串ancor