2015-12-11 4 views
1

Я пытаюсь написать регулярное выражение, которое будет соответствовать двузначному номеру, где две цифры не совпадают.Регулярное выражение двухзначного числа, где две цифры не одинаковы

Я использовал следующее выражение:

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

Однако обе строки «11» и «12» не соответствуют. Я думал, что «12» будут соответствовать. Может ли кто-нибудь сказать мне, где я ошибаюсь?

+0

'#' отсутствует во входном файле - используйте '$', чтобы обозначить конец строки и разрешить еще 1 цифру. –

+0

'^ ([0-9]) (?! \ 1) [0-9] $' – anubhava

+0

$ для обозначения конца –

ответ

6

Вам необходимо разрешить сопоставление двух цифр. Ваше регулярное выражение ^([0-9])(?!\1)$ допускает только 1-значную строку. Обратите внимание, что lookahead не потребляет символов, он проверяет наличие или отсутствие что-то после текущей позиции.

Использование

^(\d)(?!\1)\d$ 
      ^^ 

См demo

Объяснение картины:

  • ^ - начало строки
  • (\d) - матч и захватить в группе # 1 цифра
  • (?!\1) - убедитесь, что следующий символ не является той же цифры, как и в 1-й группе
  • \d - одна цифра
  • $ - конец строки.