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 に答える