Java регулярное выражение для последовательно повторяющихся букв, цифр и специальных символов - PullRequest
0 голосов
/ 27 сентября 2018

Я должен применить политику паролей, и я использую это регулярное выражение (по умолчанию для моего Identity Server), которое принимает пароль как комбинацию из нижнего регистра, верхнего регистра, числа и специального символа:

^((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*])).{0,100}$

Мне нужно изменить его так, чтобы он не совпадал со строкой, имеющей более 3 последовательных копий одного и того же символа, как, например, в Adminnnn@123.

1 Ответ

0 голосов
/ 27 сентября 2018

Это было сложно, но я думаю, что это должно сработать ( попробуйте это вживую здесь ):

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%&*])(?!.*(.)\1\1\1)[0-9a-zA-Z!@#$%&*]{0,100}$

Я использую 4 прогнозных утверждения и одно негативное утверждение.

(?=.*[0-9])         must contain a number 
(?=.*[a-z])         must contain a lower case
(?=.*[A-Z])         must contain an upper case
(?=.*[!@#$%&*])     must contain a special character
(?!.*(.)\1\1\1)     must not repeat the character in group 1 more than 3 times
[0-9a-zA-Z!@#$%&*]  is composed of these characters
{0,100}             0 to 100 symbols allowed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...