Просто сделайте:
^\d*$
*
означает: «ноль или более раз».
Поскольку вы задавали большинство вопросов с тегом Java, я предполагаю, что вы ищете решение Java. Обратите внимание, что внутри строкового литерала необходимо экранировать \
!
Демо:
class Test {
public static void main(String[] args) {
String[] tests = {"-100", "", "2334", "0"};
for(String t : tests) {
System.out.println(t + " -> " + t.matches("\\d*"));
}
}
}
производит:
-100 -> false
-> true
2334 -> true
0 -> true
Обратите внимание, что matches(...)
уже проверяет всю входную строку, поэтому нет необходимости "привязывать" ее с помощью ^
и $
.
Остерегайтесь того, что он также вернет true для чисел, которые превышают Integer.MAX_VALUE
и Long.MAX_VALUE
. ТАК, даже если matches(...)
вернул true, parseInt(...)
или parseLong(...)
может выдать исключение!