匹配两个不同的字母

时间:2015-06-24 00:17:18

标签: c# regex

有效输入是任意两个大写字母,但它们不能是相同的字母。我认为以下方法可以通过从第二个字母的字符类中减去第一个匹配的组(第一个字母)来实现。

Regex ValidInput = new Regex(@"^([A-Z])[A-Z-[\1]]$");

ValidInput.IsMatch("AA"); // should be false but is true

为什么这是错误的,这是正确的做法?谢谢!

3 个答案:

答案 0 :(得分:2)

试试这个正则表达式

^(?:([A-Z])(?!.*\1)){2}$

答案 1 :(得分:2)

这是another approach

([A-Z])(?!\1)[A-Z]

答案 2 :(得分:1)

我喜欢正则表达式,但我认为这更具可读性:

var valid = yourString.length == 2
  && char.IsUpper(yourString[0])
  && char.IsUpper(yourString[1])
  && yourString[0] != yourString[1];

如果您无法使用正则表达式工作,那么当他们审核您的代码时,有人要弄清楚您正在尝试使用正则表达式完成的内容需要多长时间?