Я хочу сделать систему регистрации в java. Он находится в очень хорошем прогрессе. У меня только одна конкретная проблема. Слабость пароля. Я сделал это, пароль должен быть длиннее 8 символов с помощью простого
if (password.getText().length() > 8) { error message }
Я тоже поставил такое условие:
if (... < 8 || !(password.getText().contains("1"))) { error message }
Но с этим условием он принимает пароль, только если ваш пароль, например: asdfghjk1 Итак, я попробовал условие с большим количеством || условие вида !....содержит("2")..|| !..содержит("9")
Но при этих условиях работает только при пароле: 123456789 Но что я действительно хочу сделать, так это пароль длиной более 8 символов, содержащий хотя бы одну заглавную букву и хотя бы одну цифру. Это какой-то способ сделать это? Кстати, я использую качели Java.
Вы можете сделать это с помощью регулярного выражения, но я не знаю, как это сделать. но это должно работать:
здесь вы подтверждаете свой пароль: Строка passwordString = password.getText();
if (passwordString.Length() > 8 && checkCapital(passwordString) && checkDigit(passwordString)){ valid password }
else { error message }
это checkCapital, я использовал коды ascii:
private static boolean checkCapital(String string) {
for (char c : string.toCharArray()) {
int code = (int) c;
if (code >= 65 && code <= 90)
return true;
}
return false;
}
это контрольная цифра:
private static boolean checkDigit(String string) {
for (int i = 0; i < 10; i++) {
if (string.contains("" + i))
return true;
}
return false;
}
Лучший способ решить эту проблему — использовать Regex. Здесь я привожу для вас пример того, как использовать регулярное выражение для проверки пароля.
import java.util.regex.*;
class GFG {
// Function to validate the password.
public static boolean
isValidPassword(String password)
{
// Regex to check valid password.
String regex = "^(?=.*[0-9])"
+ "(?=.*[a-z])(?=.*[A-Z])"
+ "(?=.*[@#$%^&+=])"
+ "(?=\\S+$).{8,20}$";
// Compile the ReGex
Pattern p = Pattern.compile(regex);
// If the password is empty
// return false
if (password == null) {
return false;
}
// Pattern class contains matcher() method
// to find matching between given password
// and regular expression.
Matcher m = p.matcher(password);
// Return if the password
// matched the ReGex
return m.matches();
}
// Driver Code.
public static void main(String args[])
{
// Test Case 1:
String str1 = "Thuans@portal20";
System.out.println(isValidPassword(str1));
// Test Case 2:
String str2 = "DaoMinhThuan";
System.out.println(isValidPassword(str2));
// Test Case 3:
String str3 = "Thuan@ portal9";
System.out.println(isValidPassword(str3));
// Test Case 4:
String str4 = "1234";
System.out.println(isValidPassword(str4));
// Test Case 5:
String str5 = "Gfg@20";
System.out.println(isValidPassword(str5));
// Test Case 6:
String str6 = "thuan@portal20";
System.out.println(isValidPassword(str6));
}
}
Выход: истинный ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ ЛОЖЬ
Также вы можете обратиться к похожим темам, перейдя по ссылке ниже:
Для лучшей практики вы должны использовать JPasswordField