【问题标题】:Check screen name for only one hyphen/underscore仅检查一个连字符/下划线的屏幕名称
【发布时间】:2012-06-19 09:25:28
【问题描述】:

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

这是我目前得到的验证:

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

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

【问题讨论】:

  • 额外的正则表达式"[a-zA-Z0-9]*[-_]?[a-zA-Z0-9]*"怎么样?这允许 0 或 1 个下划线(删除 ? 使其成为 1 个强制性下划线)。

标签: java regex validation hyphen


【解决方案1】:

你可以使用:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 2018-04-05
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多