最大字符限制和最小字符放置条件的条件

时间:2013-07-10 12:03:25

标签: c++ regex

我正在尝试使用正则表达式执行以下匹配。

  1. 输入字符应为2到10个字符的大写字母。
  2. 如果是2个字符,那么只允许那些在第一名或第二名不包含A,E,I,O,U的2个字符。
  3. 我试过了:

    [B-DF-HJ-NP-TV-XZ]{2,10}
    

    它运作良好,但我不太确定这是否是正确的,最有效的方法在这里做正则表达式。

1 个答案:

答案 0 :(得分:1)

所有归功于杰瑞的回答:

^(?:(?![AEIOU])[A-Z]{2}|[A-Z]{3,10})$

说明:

^ =“字符串的开头”,$ =“字符串的结尾”。这对于防止错误匹配很有用(例如,来自11个字符输入的10个字符的匹配,或“AMRXYZ”中的“MR”匹配)。

(?![AEIOU])是字符A,E,I,O和U的负面预测 - 即如果文本包含元音则正则表达式将不匹配。这仅适用于条件“OR”(|)正则表达式的前半部分,因此在较长的匹配中仍然允许元音。

其余内容相当明显,基于您在上述问题中已经证明了对正则表达式的理解。