# Three Ways to Check if a String Is Numeric in Java

> Check whether a Java String is numeric using Integer.parseInt(), regex pattern matching, or Apache Commons Lang NumberUtils.isCreatable() with examples

**URL:** https://sentry.io/answers/how-to-check-if-a-string-is-numeric-in-java/

---

## 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()` or `Double.parseDouble()` methods
- Using [regular expressions](https://en.wikipedia.org/wiki/Regular_expression)
- Using the `NumberUtils.isCreatable()` method from the `Apache Commons Lang` library

### Using `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.

```java
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.

```java
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

The `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:

```xml
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.17.0</version>
</dependency>
```

Then use it as follows:

```java
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.

---

*Source: [sentry.io/answers/how-to-check-if-a-string-is-numeric-in-java/](https://sentry.io/answers/how-to-check-if-a-string-is-numeric-in-java/)*
