用户名验证Java

时间:2015-07-23 13:37:35

标签: java validation

我是Java的新手,所以我不太了解这门语言。 我有一个简单的HTML表单来填写登录注册。

我的问题是用户名中的详细信息,它不能包含一些无效字符(例如重音和符号),我不知道如何检查用户名字符。

我使用request.getParameter("username")获取String变量中的用户名。

String username = request.getParameter("username");

我该怎么办?

2 个答案:

答案 0 :(得分:6)

一种简单的方法是String#matches(String regex)功能:

  

布尔匹配(String regex)
  判断此字符串是否与给定的正则表达式匹配。

String username = request.getParameter("username");
boolean valid = (username != null) && username.matches("[A-Za-z0-9_]+");

但是如果要多次使用它,则使用Pattern

会更有效
Pattern pattern = Pattern.compile("[A-Za-z0-9_]+");

每次都使用它:

boolean valid = (username != null) && pattern.matcher(username).matches();

答案 1 :(得分:0)

使用此Bean验证库:

https://github.com/ankurpathak/username-validation https://mvnrepository.com/artifact/com.github.ankurpathak.username/username-validation

它具有Google的所有限制,例如用户名验证等等。

图书馆在处理用户名验证方面有不同的限制:

  1. 用户名模式,允许a-z,0-9,句点和下划线字符。我们可以通过约束条件中的一些标志来关闭这些字符,例如includePeriod,includeUnderscore和useDigit
  2. EndWithAlphabet检查用户名是否以字母结尾
  3. StartWithAlphabet检查用户名是否以字母开头
  4. StartWithAlphaNumeric检查用户名以字母数字开头
  5. EndWithAlphaNumeric检查用户名是否以字母数字结尾
  6. NotContainConsecutivePeriod检查用户名是否不包含连续的时间段
  7. NotContainConsecutiveUnderscore检查用户名是否不包含连续的下划线
  8. NotContainPeriodFollowedByUnderscore检查用户名是否不包含句点,后跟下划线
  9. NotContainUnderscoreFollowedByPeriod检查用户名是否不包含下划线,后跟句点

默认情况下,所有约束都忽略空白,这样它将由NotBlank标准bean验证约束单独重新发布,我们可以使用每个约束的ignoreBlank(默认为true)标志来实现同样的效果。因此,像Google这样的用户名可以通过以下方式实现:

        @UsernamePattern
        @StartWithAlphaNumeric
        @NotContainConsecutivePeriod
        @EndWithAlphaNumeric
        @NotBlank
        private String username;