Регулярное выражение для проверки строки определенной длины

Я пытаюсь написать регулярное выражение для сопоставления пар карт (AA, KK, QQ ... 22) и у меня есть регулярное выражение ([AKQJT2-9])\1, У меня проблема в том, что это регулярное выражение будет соответствовать AA так же как AAbc и т.д. Есть ли способ написать регулярное выражение, чтобы я мог указать, что я хочу, чтобы соответствовать ([AKQJT2-9])\1 и только это (т.е. не более символов после).

2 ответа

Решение

Приложите регулярное выражение в ^ а также $:

^([AKQJT2-9])\1$

^ является якорем начала строки, и $ это якорь "конец строки". Если ваш регулярное выражение поддерживает это, \A а также \Z может быть даже лучшим выбором, так как ^ а также $ может также соответствовать началу / концу строки в многострочной строке, в зависимости от вашего движка регулярных выражений и конфигурации.

Вы имеете в виду, как это?

^([AKQJT2-9])\1$

Это будет совпадать только если строка "AA", "KK",...

Если вы хотите захватить оба символа, но не остальную часть строки, вам придется использовать другую скобку

($match,$unused) = $string ~= (([AKQJT2-9])\2); # in perl
Другие вопросы по тегам