如何使用regex java让用户输入某种格式


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

最新更新