Регулярное выражение, которое принимает только символы, цифры и специальные символы, а не [дубликаты]

1

Я хочу регулярное выражение, которое принимает в качестве входных символов (A..Z или a..z) и не принимает числа и специальные символы. Я написал этот метод и эти шаблоны, но он не работает:

 public static Pattern patternString = Pattern.compile("\\D*");
 public static Pattern special = Pattern.compile("[!@#$%&*,.()_+=|<>?{}\\[\\]~-]");

 public static boolean checkString(String input) {
    boolean bool_string = patternString.matcher(input).matches(); 
    boolean bool_special = !special.matcher(input).matches(); 
    return (bool_string && bool_special);
 }

checkString должен возвращать значение true, если вход: hello, table, Fire, BlaKc и т.д.

checkString должен возвращать значение false, если вход: 10, tabl_e, +, hel/lo и т.д.

Как я могу это сделать? спасибо

Теги:

1 ответ

1
Лучший ответ

Используйте что-то вроде этого:

if (subjectString.matches("[a-zA-Z]+")) {
    // It matched!
  } 
else {  // nah, it didn't match...  
     } 
  • нет необходимости привязывать регулярное выражение с помощью ^ и $ потому что метод matches ищет только полные совпадения
  • [a-zA-Z] - это класс символов, который соответствует одному символу в диапазонах az или AZ
  • квантификатор + позволяет двигателю соответствовать одному или более раз
  • 0
    Спасибо, рад, что это помогло. :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню