2016-01-14 7 views
0

Я пытаюсь установить требования для определенного числа, которое пользователь хочет ввести (pNumber). pNumber должен состоять из 2 букв, затем 6 букв или цифр и, наконец, числа.Как проверить, содержит ли строка только цифры или буквы? Android

Я реализовал метод, который я нашел здесь, в stackoverflow, но когда я ввожу число, например: «LL^&% JJk9« это все равно дает мне положительный результат? в моем понимании .match проверяет, что строка состоит только из заданных значений?

String First = pNumber.substring(0, 2); 
String Middle = pNumber.substring(2, 8); 
String Last = pNumber.substring(8, 9); 

if (First.matches(".*[a-zA-Z].*") && Middle.matches(".*[a-zA-Z0-9].*") && Last.matches(".*[0-9].*")) { 
    greenOk.setVisibility(View.VISIBLE); 
    nextBtn.setEnabled(true); 
} else { 
    redCross.setVisibility(View.VISIBLE); 
} 
+1

Этого должно быть достаточно: это обратный ваш вопрос: http://stackoverflow.com/a/8248352/503508 – Knossos

+0

Кстати, ваш regexes, вероятно, не такие, как вы думаете. Они по существу соответствуют 1. любому символу в первой строке. 2. любой символ/цифра в средней строке. 3. любая цифра в третьей строке. – Knossos

+0

[RegExr] (http://regexr.com/) отлично подходит для обучения и тестирования регулярных выражений. – NonlinearFruit

ответ

-1

This Stackoverflow подробно описано, как использовать Apache Commons, чтобы решить вашу проблему.

Если вы ищете регулярное выражение пути решения вашей проблемы, это, вероятно, поможет вам:

if(pNumber.matches("[a-zA-Z]{2}[a-zA-Z0-9]{6}[0-9]")) { 
    greenOk.setVisibility(View.VISIBLE); 
    nextBtn.setEnabled(true); 
} else { 
    redCross.setVisibility(View.VISIBLE); 
} 
+0

Средние 6 символов - это буквы/цифры, а последний символ - число. – NonlinearFruit

+0

Правильное выражение неверно. Требования: 2 буквы, затем 6 букв или цифр и, наконец, 1 цифра. Образец, который вы предоставили, соответствует 2 буквам, 6 цифрам и 1 букве. – Harmlezz

+0

Абсолютно правильно, хорошо поймать. – Knossos

1

Может быть что-то вроде:

String input1 = "TYe4r5t12"; 
    String input2 = "LL^&%JJk9"; 

    String pattern = "([a-zA-Z]{2}[a-zA-Z0-9]{6}[0-9]{1})"; 

    Pattern r = Pattern.compile(pattern); 

    Matcher m = r.matcher(input1); 

    if (m.find()) { 
     System.out.println("Valid !!!"); 
    }else{ 
     System.out.println("Invalid !!!"); 
    }