2014-10-12 2 views
1

У меня есть следующее регулярное выражение.Регулярное выражение для символа повторения

^((?=.{10,32}$)(?=.*[A-Z])(?=.*[a-z])) 

Регулярное выражение имеет следующие функциональные возможности:

  1. паролей будет содержать, по меньшей мере (1) буква верхнего регистра
  2. Пароли будут содержать по меньшей мере (1) строчной буквы
  3. Длина пароля от 10 до 32

Я хочу добавить еще одну проверку. Мне не нужен непрерывный повторяющийся характер.

Не могли бы вы помочь мне?

+1

Вы не хотите, чтобы символы повторяются спина к спине 'AAA' то есть или где-нибудь в строке' ABCDA' т.е.? – hwnd

+0

Я не хочу, чтобы charcter повторял спину к спине. Если повторить где-нибудь, тогда его штраф. –

ответ

2

Вы можете использовать отрицательный Lookahead для этого.

^(?=.{10,32}$)(?=.*[A-Z])(?=.*[a-z])(?!.*(.)\1).+$ 

Live Demo

1

Это будет соответствовать любой паре одинаковых символов:

"(.)\1" 

Вот маленькой программе.

static void Main(string[] args) 
    { 
     string a = "12223"; 
     string b = "P12345"; 


     bool z = Regex.IsMatch(a,@"(.)\1"); 
     bool x = Regex.IsMatch(b,@"(.)\1"); 

    } 
Смежные вопросы