2013-07-18 3 views
0

Нужно регулярное выражение для формата, где допускается максимум 7 цифр, с запятой после каждой третьей цифры.Regex для проверки целого числа

Допустимые значения:

7 
77 
555 
1,234 
12,345 
444,888 
4,669,988 

В настоящее время я использую ([0-9]{1}(,?[0-9]{3}){1,2}, который терпит неудачу в первых трех сценариях.

+1

вы должны использовать регулярное выражение для него? DecimalFormat был бы гораздо более прямым выбором. – Kayaman

+0

Разберите номер и убедитесь, что оно меньше 10^8. – assylias

ответ

2

Используйте этот один:

[0-9]{1,3}(,[0-9]{3}){0,2} 

Чтобы проверить целое число из строки (вы должны удалить,):

try { 
    Integer.parseInt(str.replaceAll(",",""); 
    //valid integer 
} catch (Exception e) { 
    //not valid integer 
} 
+0

Он также принимает «111,123,446» и «11,123,446». Но предел равен 7. – Kittu

+0

Мне нужно проверить с запятой, чтобы проверить правильное положение запятой и ограничить символы максимальной длиной до 7. – Kittu

0
\d{1,3}(,\d{3}){0,2} 

Попробуйте это регулярное выражение наряду с проверкой номера для проверки длины ,

public boolean isNumValid(String num) throws ParseException { 
    if (!(NumberFormat.getInstance().parse(num).intValue() > 9999999)) { 
     if (num.matches("\\d{1,3}(,\\d{3}){0,2}")) { 
      return true; 
     } 
    } 
    return false; 
} 
2

попробовать это регулярное выражение

"\\d{1,3}|\\d{1,3},\\d{3}|\\d{1,2},\\d{3},\\d{3}" 
+0

Thanx..this works – Kittu

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