我想与AhKsAdKs之类的字符串匹配(即两张牌Ah =红桃A)。我想用正则表达式匹配两张副牌,我目前拥有的是"^[AKQJT2-9][hscd]{2}$",但这可以匹配AhKh(已匹配)和AhAh这样的手。有没有办法使用反向引用来说第二个[hscd]不能与第一个相同(类似于[AKQJT2-9])

最佳答案

试试这个正则表达式:

^[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])$

10-07 15:06