2013-08-04 41 views

回答

2

使用alphabetics一个类别,与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()即可访问其文本。

+0

如果您希望匹配非ASCII字母,您需要使用'(?U)'。 – tchrist

+0

@ tchrist实际上'?U'标志是无效的。您可能正在考虑'?u',这对我的解决方案也无济于事。但感谢指出Unicode支持,我已经调整了我的答案。 – Mena

+0

不,我正在考虑Java 7中的“(?U)”。在此之前,Java正则表达式在Unicode方面确实不能很好地工作。 – tchrist