我正在尝试将没有大写字母的句子与Java中的正则表达式匹配:
"Hi this is a test" -> Shouldn't match
"hi thiS is a test" -> Shouldn't match
"hi this is a test" -> Should match
我尝试了以下正则表达式,但它也匹配我的第二个例子(“嗨,这是一个测试”)。
[a-z]+
似乎它只是看着句子的第一个单词。
任何帮助?
答案 0 :(得分:1)
[a-z]+
将匹配。
如果你想确保你的字符串不包含大写字母,你可以使用负字符类:^[^A-Z]+$
请注意,这不会处理突出的字符(例如É)。
要使其工作,您可以使用Unicode属性:^\P{Lu}+$
\P
表示不属于Unicode类别,Lu
是具有小写变体类别的大写字母。
答案 1 :(得分:1)
^[a-z ]+$
试试这个。这将验证正确的。
答案 2 :(得分:1)
它不匹配,因为您没有在匹配模式中使用空格,因此您的正则表达式只匹配整个单词而没有空格。
尝试^[a-z ]+$
之类的东西(注意空格是方括号)你也可以使用\s
这是'空格字符'的简写,但这也可以包括换行和回车等内容所以请注意。
此模式执行以下操作:
^
匹配字符串的开头
[a-z ]+
匹配任何a-z字符或空格,其中存在1个或更多。
$
匹配字符串的结尾。
答案 3 :(得分:1)
在这种情况下,我实际上会建议反对正则表达式,因为你似乎没有使用扩展字符。
而是尝试测试如下:
myString.equals(myString.toLowerCase());