2015-03-18 6 views

ответ

1

Это потому, что вы еще одна жертва среди десятков/сотен разработчиков Java, которые укушены ежедневно тем фактом, что .matches() является неназванным.

Постараться и сопоставить весь вход. Это не то, что вы хотите.

Вы должны пройти через Pattern, Matcher и .find() вместо:

private static final Pattern NONDIGIT = Pattern.compile("\\D"); 

// Test whether there is any nondigit character in a string: 
NONDIGIT.matcher(theString).find(); 

Вы должны особенно делать, что, поскольку в любом случае .matches() будет перекомпилировать Pattern каждый раз; здесь у вас есть только один Pattern.

3

должно быть:

"A123".matches("^\\d+$"); 

строчных d обозначает a цифру ^ для начала строки и ^ для конца строки.

+2

Нет необходимости в якорях; посмотри на мой ответ – fge

1

Вы можете попробовать это:

"A123".matches("[0-9]+") 

Кроме того, как вы отметили его как Java, то есть альтернативный способ использования NumberUtil.isNumber(String str) от Apache, который может проверить это для вас.

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