Java 如何为只有字母和一个“-”i的名称创建正则表达式?
我正在尝试在我的android应用程序中使用正则表达式验证名称 所以我的规则是;只有字母,没有空格或任何a-ö,a-Ö,只有一个连字符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][
我已经试过了,但是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