正規表現を分割からハイフンを避けるためにどのように?

RazzFazz:

私はリストにあなたのお気に入りのゲームを保存するための簡単な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_-]+$

正規表現のデモ

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=199028&siteId=1