繁体   English   中英

如何避免连字符分裂正则表达式?

[英]How to avoid a hyphen from splitting a regex?

我正在编写一个简单的Android应用程序,用于将您喜爱的游戏保存在列表中。

在第一个屏幕中,用户必须输入他的gamertag (作为String )。 该玩家代号应该只包含lettersaz (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次以上的字符类,如果连字符位于字符类的末尾,则不必对其进行重复操作。

[a-zA-Z0-9_-]+

Gamer-Tag不会分裂但有2场比赛。 字符类匹配G\\w+匹配amer 然后在下一场比赛中,角色类匹配-\\w+匹配Tag

如果这些是唯一允许的值,则可以使用锚点^来断言开始,使用$来断言字符串的结尾。

^[a-zA-Z0-9_-]+$

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM