因此我需要检测用户名格式为firstname.lastname
它不能在开头或结尾有点,所以也不能有空格。我使用Perl5Util matcher匹配Java中的字符串。
在正则表达式中执行此操作的最佳方法是什么?
我使用了[A-Za-z0-9\\.]
但不幸的是,这会在开头和结尾检测到点。
private static final String ALPHANUMERIC = "[A-Za-z0-9\\.]";
private static final String USERNAME_PATTERN = "/^" + ALPHANUMERIC + "+$/";
public static boolean isValidUsername(final String username) {
final Perl5Util userMatcher = new Perl5Util();
return userMatcher.match(USERNAME_PATTERN, username);
}
答案 0 :(得分:2)
你可以匹配
[A-Za-z0-9]+\.[A-Za-z0-9]+
答案 1 :(得分:1)
要在开头或结尾检测点,您可以使用这样的正则表达式:
^\.|\.$
但是,您也可以使用下面的正则表达式匹配中间带点的字符串:
^\w+(\.?\w+)*$
使用此功能,您可以在中间放置多个点,例如some.thing.too
<强> Working demo 强>
如果您只想检查some.thing
格式,可以使用它:
^\w+\.?\w+$
请注意,\w
是[A-Za-z0-9_]
的快捷方式,因此如果您要删除_
,可以将其更改为:
(?i)^[a-z]+\.?[a-z]+$
^-- insensitive flag
答案 2 :(得分:0)
试试这个:
return username.matches("[A-Za-z0-9][A-Za-z0-9.]*[A-Za-z0-9]");
无需在字符类中转义点。