我试过这样但输出错误,请帮帮我
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);
答案 0 :(得分:16)
您的解决方案几乎是正确的。正则表达式必须说"[a-z]+"
- 包括一个量词,这意味着你不匹配单个字符,而是一个或多个小写字符。请注意,uber-correct解决方案与Unicode中的任何小写字符匹配,而不仅仅是英语字母表中的小写字符,是:
"\\p{javaLowerCase}+"
另外请注意,您可以使用更少的代码实现此目的:
System.out.println(input.matches("\\p{javaLowerCase}*"));
(我在这里使用*量词,这意味着零或更多。根据所需的语义进行选择。)
答案 1 :(得分:5)
你几乎就在那里,除了你只检查一个角色。
String regex = "[a-z]+";
上述正则表达式会检查输入字符串是否包含a
到z
答案 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 );