2014-12-03 3 views
1

У меня есть образец Java REGEX, который я хочу использовать для динамического способа проверки пароля. Я не знаю, возможно ли это через регулярное выражение, но я хотел бы услышать некоторые мнения. Другие варианты всегда есть, но я хотел бы реализовать его вот так.Java регулярное выражение для проверки пароля

Образец REGEX для проверки пароля:

((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20}) 

Дело в том, что можно иметь динамическое количество цифр, например? Он настраивается и может быть изменен. Номера должны быть перемешаны по всей длине пароля.

ответ

2

Если вы хотите, как минимум 2-х цифр и 3-х строчных букв, например, можно использовать следующее:

((?=(?:.*\\d){2})(?=(?:.*[a-z]){3})(?=.*[A-Z])(?=.*[@#$%]).{6,20}) 
+1

Мы, вероятно, следует добавить '^' и '$' или быть четко указано, что это регулярное выражение должно использовать с методом «мясников». Также не было бы лучше использовать '\ D * \ d' вместо'. * \ D'? Не будет ли '. *' Требовать возврата, если он слишком много потребляет? – Pshemo

+0

@Pshemo: Я не добавлял якоря, так как это Java, и я предполагаю, что он использует '.matches()', который имеет неявные якоря. О '. *' - да, это менее оптимально, но вряд ли имеет значение для проверки пароля. –

+0

OK, это имеет смысл. Я был сбит с толку, так как вы использовали группы, не связанные с захватом, поэтому было похоже, что вы также пытаетесь сосредоточиться на выполнении этого регулярного выражения :) – Pshemo

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