public static boolean usernameValidator(String username) {
String condition = "^[a-zA-Z]+.[a-zA-z]";
Pattern p = Pattern.compile(condition);
Matcher m = p.matcher(username);
return m.matches();
}
我希望用户输入某种格式,例如名称。所以只有a-z或a-z那么。然后是a-z还是a-z。当我以某种格式输入时,该方法返回false。我是否使用了错误的语法
这里有几件事。
根据我的理解,您希望username
包含以下形式的内容:<letters>.<letters>
。
如果这是你的目标,那么你的正则表达式有一些错误。
在第二组方括号([]
)中,您写的是A-z
而不是A-Z
,后面应该有一个+
。+
表示需要一个或多个字符。如果没有它,[a-zA-Z]
只匹配单个字符。
句点也是regex中的一个特殊字符(意思是任何字符),所以您需要用反斜杠转义它,但这是一个用于转义其他字符的特殊字符,因此您需要双反斜杠
\
。
因此,我认为你的目标是:
public static boolean usernameValidator(String username) {
String condition = "^[A-Za-z]+\.[A-Za-z]+$";
Pattern p = Pattern.compile(condition);
Matcher m = p.matcher(username);
return m.matches();
}
我已经添加了$
来表示您想要匹配到一行的末尾,因为您已经包含了^
来匹配开始。
我不认为这两个在这种情况下是必要的,所以可以减少regex为[A-Za-z]+\.[A-Za-z]+
。
如果你不熟悉正则表达式,也许可以阅读一下下面的页面:
- javadoc for Pattern W3Schools Java Regex