仅检查屏幕名称中只有一个连字符/下划线



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

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

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 条件,可能以正则表达式的形式出现?

您可以使用:

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

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

因为你已经有效地证明了这个词所包含的内容。您可以将此检查添加到另一个 if 条件中。

screenName.matches("[^-]*-?[^-]*")

相关内容

最新更新