代码之家  ›  专栏  ›  技术社区  ›  Aly

正则表达式来检查范围内的字符是否不重复

  •  3
  • Aly  · 技术社区  · 16 年前

    AhKs & AdKs (即两张牌Ah=心形王牌)。我想用一个正则表达式匹配两张不穿西装的卡片,我现在拥有的是 "^[AKQJT2-9][hscd]{2}$" AhKh (适合)和 AhAh . 有没有办法用反向引用来表示第二个 [hscd] 不能与冷杉相同(类似于 [AKQJT2-9] )

    4 回复  |  直到 16 年前
        1
  •  4
  •   Gumbo    16 年前

    尝试以下正则表达式:

    ^[AKQJT2-9]([hscd])[AKQJT2-9](?!\1)[hscd]$
    

    negative look-ahead assertion (?!…)

    但是,如果正则表达式实现不支持环视断言,则可能需要将其扩展为:

    ^[AKQJT2-9](h[AKQJT2-9][scd]|s[AKQJT2-9][hcd]|c[AKQJT2-9][hsd]|d[AKQJT2-9][hsc])$
    
        2
  •  5
  •   Max Shawabkeh    16 年前

    不是很优雅,但很管用:

    ^[AKQJT2-9]([hscd])[AKQJT2-9](?!\1)[hscd]$
    
        3
  •  1
  •   user187291    16 年前

    /^[AKQJT2-9]([hscd])[AKQJT2-9](?!\1)[hscd]$/
    

        4
  •  1
  •   kennytm    16 年前

    对使用反向参考和负面展望。

    ^([AKQJT2-9])([hscd])(?!\1)(?!.\2)[AKQJT2-9][hscd]$