我有一个正则表达式的简单示例。但它没有用。我不知道我做错了什么:
String name = "abc";
System.out.println(name.matches("[a-zA-Z]"));
它返回false,应该是真的。
答案 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]+
[a-zA-Z]
表示: