Это мой код, и я понятия не имею, почему он возвращает ложьRegex проверка, если строка содержит только цифры не работает
"A123".matches("\\D+");
Это мой код, и я понятия не имею, почему он возвращает ложьRegex проверка, если строка содержит только цифры не работает
"A123".matches("\\D+");
Это потому, что вы еще одна жертва среди десятков/сотен разработчиков 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
.
должно быть:
"A123".matches("^\\d+$");
строчных d
обозначает a цифру ^
для начала строки и ^
для конца строки.
Вы можете попробовать это:
"A123".matches("[0-9]+")
Кроме того, как вы отметили его как Java, то есть альтернативный способ использования NumberUtil.isNumber(String str) от Apache, который может проверить это для вас.
Нет необходимости в якорях; посмотри на мой ответ – fge