如何使用java检查字符串中的所有字符是小写的

时间:2012-11-13 17:22:55

标签: java regex

我试过这样但输出错误,请帮帮我

String inputString1 = "dfgh";// but not dFgH
String regex = "[a-z]";
boolean result;

Pattern pattern1 = Pattern.compile(regex);
Matcher matcher1 = pattern1.matcher(inputString1);
result = matcher1.matches();
System.out.println(result);

5 个答案:

答案 0 :(得分:16)

您的解决方案几乎是正确的。正则表达式必须说"[a-z]+" - 包括一个量词,这意味着你不匹配单个字符,而是一个或多个小写字符。请注意,uber-correct解决方案与Unicode中的任何小写字符匹配,而不仅仅是英语字母表中的小写字符,是:

"\\p{javaLowerCase}+"

另外请注意,您可以使用更少的代码实现此目的:

System.out.println(input.matches("\\p{javaLowerCase}*"));

(我在这里使用*量词,这意味着零或更多。根据所需的语义进行选择。)

答案 1 :(得分:5)

你几乎就在那里,除了你只检查一个角色。

String regex = "[a-z]+";

上述正则表达式会检查输入字符串是否包含az

之内的任意数量的字符

read about how to use Quantifiers in regex

答案 2 :(得分:2)

使用此模式:

String regex = "[a-z]*";

您当前的模式仅在测试的字符串仅为一个字符时才有效。

请注意,它完全符合它的样子:它不会真正测试字符串是否为小写但如果它不包含[a-z]之外的字符。这意味着它为"àbcd"等小写字符串返回false。 Unicode世界中的正确解决方案是使用Character.isLowercase()函数并循环遍历字符串。

答案 3 :(得分:2)

应该是

^[a-z]+$

^是字符串

的开头

$是字符串

的结尾

[a-z]+匹配1到多个小字符

你需要使用像*这样的量词匹配0到多个字符,+匹配1到多个字符..它们会匹配前面字符或范围的0或1到很多倍< / p>

答案 4 :(得分:0)

为什么要使用正则表达式?

String inputString1 = "dfgh";// but not dFgH
boolean result = inputString1.toLowerCase().equals( inputString1 );