正则表达式确保不重复任何字符

mis*_*153 3 c# regex

我需要确保输入字符串遵循以下规则:

  • 它应仅包含大写字符.
  • 字符串中不应重复任何字符.例如.ABCA无效,因为'A'正在重复.

对于大写的东西,[AZ]应该没问题.但我迷失在如何确保没有重复的角色.

有人可以建议使用正则表达式的方法吗?

Mar*_*ers 6

可以使用.NET正则表达式执行此操作,但我会建议不要使用它:

string s = "ABCD";
bool result = Regex.IsMatch(s, @"^(?:([A-Z])(?!.*\1))*$");
Run Code Online (Sandbox Code Playgroud)

相反,我建议检查字符串的长度是否与不同字符的数量相同,并分别检查AZ要求:

bool result = s.Cast<char>().Distinct().Count() == s.Length;
Run Code Online (Sandbox Code Playgroud)

另外,如果性能是一个关键问题,请逐个遍历字符并保留您所看到的记录.