我正在编写一个简单的安卓应用程序,用于将您喜欢的游戏保存在列表中。
在第一个屏幕中,用户必须输入他的gamertag
(作为String
(。玩家代号应仅包含来自 a-z (uppercase and lowercase)
、numbers (0-9)
和 underscores/hpyhens (_ and -)
的letters
。
我可以让它在每个职位或hyphen
开始时与underscore
一起工作。但是,如果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+ 次,如果连字符位于字符类的末尾,则不必将其删除。
[a-zA-Z0-9_-]+
Gamer-Tag
不会拆分,但有 2 场比赛。字符类与G
匹配,w+
匹配amer
。然后在下一个匹配中,字符类匹配-
,w+
匹配Tag
。
如果这些是唯一允许的值,则可以使用锚点^
断言开始,$
断言字符串的结束。
^[a-zA-Z0-9_-]+$
正则表达式演示