Java:验证textfield输入是否只包含字母字符

Java:验证textfield输入是否只包含字母字符,java,regex,character-properties,Java,Regex,Character Properties,如何验证文本是否仅包含字母字符 我想我们可以使用Pattern.matches(),但我不知道字母字符的正则表达式。使用字母类别,结合匹配项和分隔符作为输入文本的开头和结尾,例如: String valid = "abc"; String invalid = "abc3"; Pattern pattern = Pattern.compile("^\\p{Alpha}+$"); // use \\p{L} for Unicode support Matcher matcher = pattern.

如何验证文本是否仅包含字母字符


我想我们可以使用
Pattern.matches()
,但我不知道字母字符的正则表达式。

使用字母类别,结合
匹配项和分隔符作为输入文本的开头和结尾,例如:

String valid = "abc";
String invalid = "abc3";
Pattern pattern = Pattern.compile("^\\p{Alpha}+$"); // use \\p{L} for Unicode support
Matcher matcher = pattern.matcher(valid);
System.out.println(matcher.matches());
matcher = pattern.matcher(invalid);
System.out.println(matcher.matches());
输出:

true
false
注意:这也可以防止输入为空。如果要允许它们,请使用与
+
不同的量词,即
*


最后,由于您将对
java.awt.TextField
使用它,因此只需使用方法
getText()

访问其文本即可使用字母分类,并结合
匹配项
,以及输入文本开头和结尾的分隔符,例如:

String valid = "abc";
String invalid = "abc3";
Pattern pattern = Pattern.compile("^\\p{Alpha}+$"); // use \\p{L} for Unicode support
Matcher matcher = pattern.matcher(valid);
System.out.println(matcher.matches());
matcher = pattern.matcher(invalid);
System.out.println(matcher.matches());
输出:

true
false
注意:这也可以防止输入为空。如果要允许它们,请使用与
+
不同的量词,即
*


最后,由于您将对
java.awt.TextField
使用它,因此您可以使用方法
getText()

访问它的文本,如果您使用JFormattedTextField


这里有更多信息:

如果您使用JFormattedTextField


这里有更多信息:

文本字段允许为空吗?文本字段允许为空吗?如果希望与非ASCII字母匹配,则需要使用
(?U)
。@tchrist实际上
?U
标志无效。您可能正在考虑
?u
,这也不适用于我的解决方案。但是感谢您指出Unicode支持,我已经修改了我的答案。不,我想到的是来自Java7的
(?U)
。在此之前,Java正则表达式在Unicode上确实不能很好地工作。如果希望与非ASCII字母匹配,则需要使用
(?U)
。@tchrist实际上
?U
标志无效。您可能正在考虑
?u
,这也不适用于我的解决方案。但是感谢您指出Unicode支持,我已经修改了我的答案。不,我想到的是来自Java7的
(?U)
。在那之前,Java正则表达式在Unicode上确实不能很好地工作。