How to check if a String is numeric in Java?

Abdul D.
—The Problem
I don’t know how to check if a String is numeric in Java.
The Solution
In Java, there are several ways to check whether a String is numeric, including the following common approaches:
- Using the
Integer.parseInt()orDouble.parseDouble()methods - Using regular expressions
- Using the
NumberUtils.isCreatable()method from theApache Commons Langlibrary
Using Integer.parseInt() or Double.parseDouble()
Integer.parseInt() or Double.parseDouble()You can use Integer.parseInt() to check whether a string is numeric by attempting to parse it. If the string is not numeric, a NumberFormatException will be thrown.
public class Main { public static void main(String[] args) { String numericString = "123"; String nonNumericString = "123a"; System.out.println(isNumeric(numericString)); // 123 = true System.out.println(isNumeric(nonNumericString)); // 123a = false } public static boolean isNumeric(String str) { try { Integer.parseInt(str); return true; } catch (NumberFormatException e) { return false; } } }
In this example, the isNumeric() method attempts to parse the string using Integer.parseInt(). If the parsing fails, it returns false.
Using Regular Expressions
You can use regular expressions to check whether a string is numeric. This method allows for more flexibility in defining what counts as a numeric value.
public class Main { public static void main(String[] args) { String numericString = "123.45"; String nonNumericString = "123a"; System.out.println(isNumeric(numericString)); // true System.out.println(isNumeric(nonNumericString)); // false } public static boolean isNumeric(String str) { return str.matches("-?\\d+(\\.\\d+)?"); } }
In this example, the regular expression -?\d+(\\.\d+)? checks whether the string is a valid number, optionally allowing for a negative sign and a decimal point.
Using Apache Commons Lang Library
Apache Commons Lang LibraryThe Apache Commons Lang library provides a utility method NumberUtils.isCreatable() that can be used to check whether a string is numeric.
To use this method, include the following dependency in your project:
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>
Then use it as follows:
import org.apache.commons.lang3.math.NumberUtils; public class Main { public static void main(String[] args) { String numericString = "123.45"; String nonNumericString = "123a"; System.out.println(NumberUtils.isCreatable(numericString)); // true System.out.println(NumberUtils.isCreatable(nonNumericString)); // false } }
The NumberUtils.isCreatable() method can handle integers, floating-point numbers, and even numbers in scientific notation.
- Sentry BlogException Handling in Java (with Real Examples)
- Syntax.fmListen to the Syntax Podcast
- Listen to the Syntax Podcast
![Syntax.fm logo]()
Tasty treats for web developers brought to you by Sentry. Get tips and tricks from Wes Bos and Scott Tolinski.
SEE EPISODES
Considered “not bad” by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world’s best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.
