给定一个表示用户名的字符串str ,任务是在正则表达式的帮助下验证该用户名。
如果满足以下所有条件,则认为用户名有效:
- 用户名包含6到30个字符(包括10个字符) 。如果用户名
由少于6个或大于30个字符,则该用户名无效。 - 用户名只能包含字母数字字符和下划线(_)。字母数字字符描述由小写字符[a – z] ,大写字符[A – Z]和数字[0 – 9]组成的字符集。
- 用户名的第一个字符必须是字母字符,即小写字符
[a – z]或大写字符[A – Z] 。
例子:
Input: str = “1Geeksforgeeks”
Output: False
Explanation:
The given username is invalid because it starts with a digit.
Input: str = “Geeksforgeeks_21”
Output: True
Explanation:
The given username satisfies all the conditions mentioned.
Input: str = “Geeksforgeeks?10_2A”
Output: False
Explanation:
The given username is invalid because it consists of invalid character “?”.
方法:想法是使用正则表达式来验证给定的用户名是否有效。可以按照以下步骤计算答案:
- 获取字符串。
- 形成一个正则表达式来验证给定的字符串。根据条件,可以通过以下方式形成正则表达式:
regex = "^[A-Za-z]\\w{5, 29}$"
在哪里:
- “ ^”表示字符串的起始字符。
- “ [A-Za-z]”确保起始字符使用小写或大写字母。
- “ \\ w {5,29}”表示检查以确保其余项目均为单词项目,其中包括下划线,直到到达末尾并用$表示。
- “ {5,29}”代表给我们的6-30个字符约束减去预定义的第一个字符。
- 将字符串与正则表达式匹配。在Java,可以使用Pattern.matcher()完成此操作。
- 如果字符串与给定的正则表达式匹配,则返回true;否则返回false。
下面是上述方法的实现:
// Java program to validate a username
// using Regular Expression or ReGex
import java.util.regex.*;
class GFG {
// Function to validate the username
public static boolean isValidUsername(String name)
{
// Regex to check valid username.
String regex = "^[A-Za-z]\\w{5,29}$";
// Compile the ReGex
Pattern p = Pattern.compile(regex);
// If the username is empty
// return false
if (name == null) {
return false;
}
// Pattern class contains matcher() method
// to find matching between given username
// and regular expression.
Matcher m = p.matcher(name);
// Return if the username
// matched the ReGex
return m.matches();
}
// Driver Code
public static void main(String[] args)
{
// Test Case: 1
String str1 = "Geeksforgeeks";
System.out.println(isValidUsername(str1));
// Test Case: 2
String str3 = "1Geeksforgeeks";
System.out.println(isValidUsername(str3));
// Test Case: 3
String str5 = "Ge";
System.out.println(isValidUsername(str5));
}
}
输出:
true
false
false