私はリストにあなたのお気に入りのゲームを保存するための簡単なAndroidアプリを書いています。
最初の画面では、ユーザーは自分を入力する必要がありますgamertag
(とString
)。ゲーマータグにのみ含まれている必要がありますletters
からa-z (uppercase and lowercase)
、numbers (0-9)
とunderscores/hpyhens (_ and -)
。
私はそれがで動作するように取得することができunderscore
、すべての位置にあるか、hyphen
冒頭に。しかし、もしString
含まれているhyphen
それを取得真ん中で"split
二つに」とあればhyphen
終わりですが、それだけでは立っています。
私はこの思い付きましたregex
:
[a-zA-Z0-9_\-]\w+
\ニーズをエスケープするためにJavaでそれは少し違って見えます。
[a-zA-Z0-9_\\-]\\w+
Gamertags
それは検証する必要があります:
- GamerTag
- Gamer_Tag
- _GamerTag
- GamerTag_
- -GamerTag
- Gamer-Tag
- GamerTag-
Gamertags
それは検証しないでください。
- !GamerTag
- Gamer%Tag
- Gamer Tag
Gamertags
それは検証する必要がありますが、私はregex
失敗します。
- Gamer-Tag
- GamerTag-
あなたのパターンは、[a-zA-Z0-9_\-]\w+
文字クラスのうちの1つの文字にマッチし1+倍単語文字が続く\w
一致していません-
。
あなたはハイフンが存在している文字クラス1+回繰り返す可能性があり、ハイフンが文字クラスの末尾にある場合、あなたはそれをeacapeする必要はありません。
[a-zA-Z0-9_-]+
Gamer-Tag
スプリットを得るが、2つの試合を持っていません。文字クラスの一致G
と\w+
一致amer
。そして、次の試合文字クラスの試合で-
と\w+
マッチTag
。
これらは値のみが許可されている場合は、アンカーを使用することができ^
、開始を主張すると$
、文字列の末尾を主張します。
^[a-zA-Z0-9_-]+$