大写字母和不返回的数字

时间:2014-02-10 19:08:41

标签: c# regex

我想编写一个正则表达式,接受遵循此规则的所有单词:

  1. 这个词只包含大写字母和数字;
  2. 数字将始终在字母后面;
  3. 会有一对偶数大写字母,后跟一个数字;
  4. 数字只能在单词中出现一次。
  5. 这些是“好”的话:

    T3L9A8L4
    A1B2
    Q2W4E6R8A1B3D5F7
    

    这些是“坏”字:

    T3
    TT33
    Y3Y4Y6
    T1A2B3T1
    

    我如何为此编写正则表达式? 很抱歉没有添加任何代码 - 不知道如何开始编写代码。

2 个答案:

答案 0 :(得分:1)

正则表达式可以满足你的前3个点,

([A-Z]\d[A-Z]\d)+

http://rubular.com/r/GXB4BGKQFT

但它(实际上)不能满足最后一个

  

数字只能在单词

中出现一次

为了实现这一点,你必须对每个可能的数字排列都有不同的情况,这可能是 10!个案

答案 1 :(得分:1)

您可以使用负向前瞻来防止重复数字和反向引用吗?

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

这是负面的预测。如果再次显示该数字,则会捕获一个数字并取消匹配。

regex101 demo