简单的java正则表达式不起作用

时间:2014-07-14 17:05:40

标签: java regex

我有一个正则表达式的简单示例。但它没有用。我不知道我做错了什么:

String name = "abc";
System.out.println(name.matches("[a-zA-Z]"));

它返回false,应该是真的。

4 个答案:

答案 0 :(得分:3)

使用:

name.matches("[a-zA-Z]+") // matches more than one character 

name.matches("\\w+") // matches more than one character

name.matches("[a-zA-Z]") // matches exactly one character.

答案 1 :(得分:3)

+添加到正则表达式以匹配一个或多个字母,

String name = "abc"; System.out.println(name.matches("[a-zA-Z]+"));

您的正则表达式[a-zA-Z]必须匹配单个字母,不能超过一个。

[a-zA-Z]匹配a-z的小写字母或匹配A-Z的大写字母。

答案 2 :(得分:1)

此评估为false的原因是,它尝试将 entrie字符串(请参阅String.matches()的文档)与仅与单个字符匹配的模式[A-Za-z]匹配。要么使用 Pattern.compile("[A-Za-z]").matcher(str).find()查看子字符串是否匹配(在这种情况下将返回true),或者更改RegEx以考虑多个字符。最干净的方法是

Pattern.compile("^[A-Za-z]+$");

^标记"字符串的开头"和$标记"字符串结束"。 +表示"之前的标记至少一次"。

如果您还想允许空字符串,请使用

Pattern.compile("^[A-Za-z]*$");

代替(*表示"匹配前一个标记0次或更多次")

答案 3 :(得分:1)

尝试使用[a-zA-Z]+

enter image description here

[a-zA-Z]表示:

enter image description here