Как проверить, содержит ли текст только буквы алфавита?Java: проверять ввод текстового поля, если он содержит только буквенные символы
Я думаю, мы можем использовать Pattern.matches()
, но я не знаю регулярного выражения для буквенных символов.
Как проверить, содержит ли текст только буквы алфавита?Java: проверять ввод текстового поля, если он содержит только буквенные символы
Я думаю, мы можем использовать Pattern.matches()
, но я не знаю регулярного выражения для буквенных символов.
Используйте категорию 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()
.
Вам нужно использовать '(? U)', если вы ожидаете, что это будет соответствовать алфавиту, отличному от ASCII. – tchrist
@tchrist Фактически флаг '? U' недопустим. Вероятно, вы думаете о '? U', и это тоже не будет работать с моим решением. Но спасибо за указание поддержки Unicode, я адаптировал свой ответ. – Mena
Нет, я думаю о '(? U)' из Java 7. До этого, регулярные выражения Java действительно плохо работали с Unicode. – tchrist
Было бы лучше, если бы вы использовали JFormattedTextField
здесь подробнее в нем: http://docs.oracle.com/javase/7/docs/api/javax/swing/JFormattedTextField.html
текстовое поле разрешено ли быть пустым? – MAV
@MAV нет нет. – user1757703