Валидация пароля (регулярное выражение)

Добрый день.

При тестировании своего приложения столкнулись с проблемой при валидации вводимого пароля пользователя.
Из документации:

((?=.*\\d)(?=.*\\p{javaLowerCase}) (?=.*\\p{javaUpperCase}).{6,20})
Это означает, что в пароль должен содержать от 6 до 20 символов, в нем можно использоваться цифры, символы и буквы латинского алфавита. При этом обязательно в пароле должна быть хотя бы одна цифра, одна буква в нижнем регистре и одна буква в верхнем регистре.

Согласно этой цитате, регулярное выражение должно пропускать исключительно латинские символы. На деле же оно пропускает и символы остальных алфавитов. Для верности я проверил не только кириллицу, но и символы греческого алфавита. Оба пароля были приняты системой.

И так вопросы. Это баг? Фича и просто неточность текста документации?

PS. Регулярку точно не трогали, используется стандартная. В политике проверки пароля стоит значение true.

Добрый день!

Это неточность документации. Мы будем рады если вы предложите свою версию выражения с описанием, в виде тикета или PR в репозитории https://github.com/cuba-platform/documentation

Благодарю за ответ.

Для своих нужд я переделал стандартную регулярку, чтобы она соответствовала тому, что написано в документации:
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})

На мой взгляд это регулярное выражение теперь соответствует формулировке:
Это означает, что в пароль должен содержать от 6 до 20 символов, в нем можно использовать цифры, символы и буквы латинского алфавита. При этом обязательно в пароле должна быть хотя бы одна цифра, одна буква в нижнем регистре и одна буква в верхнем регистре.

2 симпатии