2016-02-11 3 views
-5

Привет, я хочу проверить, содержит ли строка одну альфа, одну цифру и хотя бы один из этих специальных символов (@, #, $). Так кто-нибудь может помочь мне решить проблему.

Примечание: У меня есть библиотека apache common lang 3.0. Это поможет нам решить вышеуказанный вопрос?

+0

прочитайте на regEx или по крайней мере google for содержит метод в String. Что ты уже испробовал ? –

ответ

1

Вот простая реализация.

private static boolean isValidPassword(char[] password) { 
    boolean hasLetter = false, hasDigit = false, hasSpecial = false; 
    for (char ch : password) 
     if (Character.isLetter(ch)) 
      hasLetter = true; 
     else if (Character.isDigit(ch)) 
      hasDigit = true; 
     else if ("@#$".indexOf(ch) != -1) 
      hasSpecial = true; 
    return (hasLetter && hasDigit && hasSpecial); 
} 

можно отрегулировать как необходимость точного определения «буквы», «цифра» и «специальный», и прекратить поиски рано, когда все 3 нашел, если это необходимо.

+0

Спасибо, Андреас. Это работает. – VelNaga

0

Вы можете сделать это с помощью String.matches() и с помощью регулярного выражения. Рассмотрим следующее решение.

public boolean isAlphaNumeric(String s){ 
String pattern= "^(?=.*[a-zA-Z])(?=.*\d)(?=.*[[email protected]#$*()_+])[A-Za-z\d][A-Za-z\[email protected]#$*()_+]"; 
    if(s.matches(pattern)){ 
     return true; 
    } 
    return false; 

}

Позвольте мне знать, если он работает.

+0

Не работает. Он не допускает других специальных символов. Также, если ваша строка содержит только «ganesh», это правда, но она должна возвращать false. Строка в моем случае должна содержать по крайней мере один числовой и специальные символы ($, @, #). – VelNaga

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

  • Нет связанных вопросов^_^