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

时间:2012-06-19 09:25:29

标签: java regex validation hyphen

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

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

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;
}

我想添加no-multiple-hyphen / underscore验证作为另一个if条件可能是RegEx的形式?

2 个答案:

答案 0 :(得分:3)

您可以使用:

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

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

答案 1 :(得分:0)

因为你已经有效了。您可以在另一个if条件中添加此检查。

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