Регулярное выражение для проверки строки определенной длины
Я пытаюсь написать регулярное выражение для сопоставления пар карт (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