2015-04-06 3 views
-1

У меня есть следующий код:проверки порядка с фильтром

String sPassword = pssfldLoginPsw.getText(); 
boolean match = sPassword.matches("[a-zA-Z+]+[0-9+]+[&@!#+]+"); 

if (match==false) 
{        
    System.out.println("Didn't Work");      
} 

if (match==true) 
{ 
    System.out.println("Work"); 
} 

И это отлично работает, если я вход [email protected] или G2!. Однако, если я ввожу что-то вроде !G2 или [email protected], он устанавливает match=false. Поскольку это поле должно содержать букву, номер и неаппанумерный символ, но оно должно иметь их в любом порядке. Как мне это сделать?

+1

Я предлагаю не делать это с одним регулярным выражением. Вместо этого попробуйте 3 из них. –

+0

Каковы возможные значения, которые вы хотите разрешить? Я должен быть в состоянии дать вам точное регулярное выражение, но мне нужно знать, что вы хотите разрешить. Например, ваше текущее регулярное выражение допускает только групповые символы в конце пароля. Поэтому правильно отклонять пароли с помощью подстановочных знаков посередине. – Ractoc

+0

Я бы хотел, чтобы он проверялся до тех пор, пока он имеет букву (верхний или нижний регистр), номер и не буквенно-цифровой символ (или подстановочный знак, как я думаю, вы его называете) в любом месте пароля, который будет принят, иначе Я бы не хотел, чтобы это было принято. @Ractoc – Dan

ответ

0

Так что я сделал некоторые дальнейшие исследования и выяснил, что "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})" будет делать то, что мне нужно для этого.

String sPassword = pssfldLoginPsw.getText(); 
boolean match = sPassword.matches("((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"); 

if (match==false) 
{        
    System.out.println("Didn't Work");      
} 

if (match==true) 
{ 
    System.out.println("Work"); 
} 

(?=.*\d) сусло содержит одну цифру от 0-9

(?=.*[a-z]) обязательно содержит один строчных символов

(?=.*[A-Z]) сусло содержит один прописные символы

(?=.*[@#$%]) сусло содержит один специальные символы в списке " @ # $% "

. соответствует ничего с предыдущим условием проверкой

{6,20} длиной не менее 6 символов и не более 20

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