正则表达式,用于在开始或结束时检测点

时间:2015-06-17 23:57:05

标签: java regex

因此我需要检测用户名格式为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);
}

3 个答案:

答案 0 :(得分:2)

你可以匹配

[A-Za-z0-9]+\.[A-Za-z0-9]+

答案 1 :(得分:1)

要在开头或结尾检测点,您可以使用这样的正则表达式:

^\.|\.$

但是,您也可以使用下面的正则表达式匹配中间带点的字符串:

^\w+(\.?\w+)*$

使用此功能,您可以在中间放置多个点,例如some.thing.too

<强> Working demo

enter image description here

如果您只想检查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]");

无需在字符类中转义点。