Java 如何为只有字母和一个“-”i的名称创建正则表达式?

Java 如何为只有字母和一个“-”i的名称创建正则表达式?,java,android,regex,Java,Android,Regex,我正在尝试在我的android应用程序中使用正则表达式验证名称 所以我的规则是;只有字母,没有空格或任何a-ö,a-Ö,只有一个连字符 我已经试过了,但是reg表达式语言让我头疼…这并不是验证名称的最佳方法。但假设您已经解决了需求,那么您可以使用下一个示例: if(input.matches("[a-zA-Z]+(\\-[a-zA-Z]+)?")) { //OK } else { //Invalid } 我使用以下几个示例进行了测试: 给你一些基本知识 特别是: [[a-f][

我正在尝试在我的android应用程序中使用正则表达式验证名称

所以我的规则是;只有字母,没有空格或任何a-ö,a-Ö,只有一个连字符


我已经试过了,但是reg表达式语言让我头疼…

这并不是验证名称的最佳方法。但假设您已经解决了需求,那么您可以使用下一个示例:

if(input.matches("[a-zA-Z]+(\\-[a-zA-Z]+)?")) {
    //OK
} else {
    //Invalid
}
我使用以下几个示例进行了测试:

给你一些基本知识

特别是:

[[a-f][0-9]]显示您可以执行或执行操作。 [d-f]显示您可以选择ascii范围 它甚至告诉你:

大多数时候,内置的字符类更有用

并解释了\w和\w选择器\w接受下划线和数字

[[A-Z][A-Z]-]+应该可以工作。这样做的好处是确保您至少获得一个字符,不过如果您有一个名为-,的用户,那么imho就没有那么好了

编辑:


如果你想添加你的应用程序的名称,我会确保不购买它。这种懒惰只会导致我不想安装一个应用程序。

在这里阅读第41项:不确定您是否已经尝试过Web for regex,但它解释得很好。@NullUserException:不是Perl,而是Java。然而,这是他想要的一个简单的regexp…@Khedar我指的是这样一句话,认为某人的名字只能包含某些字符的代码是愚蠢的、冒犯性的和错误的,我完全赞同。好吧,我同意,除非所说的代码在特定上下文中验证了一个名字,例如一个站点昵称。如果您仅将规则设置为ASCII和连字符,则这是您的权利:D
String       matches?
qwe            Yes          
qwe-           No   
qwe-qwe        Yes
qwe-qwe-       No   
qw2e-qwe2      No   
qwe-qwe-qwe    No