给定密码,任务是在正则表达式的帮助下验证密码。
如果满足以下所有约束,则认为密码有效:
- 它包含至少 8 个字符,最多 20 个字符。
- 它至少包含一位数字。
- 它至少包含一个大写字母。
- 它至少包含一个小写字母。
- 它至少包含一个特殊字符,其中包括!@#$%&*()-+=^ 。
- 它不包含任何空格。
例子:
Input: Str = “Geeks@portal20”
Output: True.
Explanation: This password satisfies all constraints mentioned above.
Input: Str = “Geeksforgeeks”
Output: False.
Explanation: It contains upper case and lower case alphabet but doesn’t contains any digits, and special characters.
Input: Str = “Geeks@ portal9”
Output: False.
Explanation: It contains upper case alphabet, lower case alphabet, special characters, digits along with white space which is not valid.
Input: Str = “12345”
Output: False.
Explanation: It contains only digits but doesn’t contains upper case alphabet, lower case alphabet, special characters, and 8 characters.
方法:这个问题可以通过使用正则表达式来解决。
- 获取密码。
- 创建一个正则表达式来检查密码是否有效,如下所述:
regex = “^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&-+=()])(?=\\S+$).{8, 20}$”
在哪里:
- ^表示字符串的起始字符。
- (?=.*[0-9])表示一个数字必须至少出现一次。
- (?=.*[az])表示小写字母必须至少出现一次。
- (?=.*[AZ])表示必须至少出现一次的大写字母。
- (?=.*[@#$%^&-+=()]表示必须至少出现一次的特殊字符。
- (?=\\S+$)整个字符串不允许有空格。
- .{8, 20}表示至少 8 个字符,最多 20 个字符。
- $代表字符串。
- 将给定的字符串与正则表达式匹配。在Java,这可以使用 Pattern.matcher() 来完成。
- 如果字符串与给定的正则表达式匹配,则返回 true,否则返回 false。
下面是上述方法的实现:
// Java program to validate
// the password using 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 = "Geeks@portal20";
System.out.println(isValidPassword(str1));
// Test Case 2:
String str2 = "Geeksforgeeks";
System.out.println(isValidPassword(str2));
// Test Case 3:
String str3 = "Geeks@ 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 = "geeks@portal20";
System.out.println(isValidPassword(str6));
}
}
true
false
false
false
false
false
如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live