2

我需要验证用户的屏幕名称以确保它不能有多个连字符或下划线我不希望人们的屏幕名称都是标点符号。

这是我到目前为止的验证:

public boolean validateScreenName(String screenName) {
  // Check screen name has > 0 chars and that it contains only a-z, A-Z, _ and -
  boolean validated = false;

  if (screenName.matches("[a-zA-Z0-9_-]{1,20}") 
      && (! screenName.equals("")) 
      && (! screenName.contains("\\s"))) {
    validated = true; 
  } else {
    validated = false;
  }
  return validated;
}

我想添加无多个连字符/下划线验证作为另一个 if 条件可能以 RegEx 的形式?

4

2 回答 2

3

你可以使用:

screenName.matches("^(?=[^_-]*[_-]?[^_-]*$)[a-zA-Z0-9_-]{1,20}$")

不需要其他条件,它们是多余的。

于 2012-06-19T09:33:44.573 回答
0

由于您已经验证了单词包含的内容。您可以在另一个 if 条件中添加此检查。

screenName.matches("[^-]*-?[^-]*")
于 2012-06-19T09:32:43.540 回答