我希望与AhKs
&等字符串匹配AdKs
(即两张牌Ah =心之王)。我希望将两张非正式牌与正则表达式匹配,我目前拥有的是"^[AKQJT2-9][hscd]{2}$"
,但这可以匹配AhKh
(适合)和AhAh
之类的牌。有没有办法可以使用反向引用来说第二个[hscd]
不能与第一个[AKQJT2-9]
类似
答案 0 :(得分:5)
不完全优雅,但有效:
^[AKQJT2-9]([hscd])[AKQJT2-9](?!\1)[hscd]$
答案 1 :(得分:4)
试试这个正则表达式:
^[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 :(得分:1)
负面的预测来救援
/^[AKQJT2-9]([hscd])[AKQJT2-9](?!\1)[hscd]$/
:(太晚了。
答案 3 :(得分:1)
是。使用反向引用和负面预测。
^([AKQJT2-9])([hscd])(?!\1)(?!.\2)[AKQJT2-9][hscd]$