2013-08-04 1 views
0

Как проверить, содержит ли текст только буквы алфавита?Java: проверять ввод текстового поля, если он содержит только буквенные символы

Я думаю, мы можем использовать Pattern.matches(), но я не знаю регулярного выражения для буквенных символов.

+0

текстовое поле разрешено ли быть пустым? – MAV

+0

@MAV нет нет. – user1757703

ответ

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

Вам нужно использовать '(? U)', если вы ожидаете, что это будет соответствовать алфавиту, отличному от ASCII. – tchrist

+0

@tchrist Фактически флаг '? U' недопустим. Вероятно, вы думаете о '? U', и это тоже не будет работать с моим решением. Но спасибо за указание поддержки Unicode, я адаптировал свой ответ. – Mena

+0

Нет, я думаю о '(? U)' из Java 7. До этого, регулярные выражения Java действительно плохо работали с Unicode. – tchrist

Смежные вопросы