Java 使用NumberFormatException检查字符串是否为double而不失败

Java 使用NumberFormatException检查字符串是否为double而不失败,java,regex,double,Java,Regex,Double,我希望避免使用try-catch来检查字符串是否实际上是有效的双精度值 在双类java文档中,它显示了一个正则表达式来实现这一点。我感到有点沮丧的是,他们[Java语言/Std Lib.Spec folk]并没有简单地决定添加一个方便的方法来对正则表达式或模式执行这样的检查或常量 有人知道流行的包装吗(例如,像实现这样一个测试的jakarta commons math。我更喜欢避免将javadoc regex复制粘贴到我的代码中,因为它似乎是一种非常标准的东西,可能会有一些实现。NumberUt

我希望避免使用try-catch来检查字符串是否实际上是有效的双精度值

在双类java文档中,它显示了一个正则表达式来实现这一点。我感到有点沮丧的是,他们[Java语言/Std Lib.Spec folk]并没有简单地决定添加一个方便的方法来对正则表达式或模式执行这样的检查或常量


有人知道流行的包装吗(例如,像实现这样一个测试的jakarta commons math。我更喜欢避免将javadoc regex复制粘贴到我的代码中,因为它似乎是一种非常标准的东西,可能会有一些实现。

NumberUtils
来自Apache commons提供了一个静态方法
NumberUtils.isCreatable(someString)
用于检查是否存在有效的Java编号。您可以从

示例代码:

public static void main(String[] args){
    String doubleString = "5.05";
    if(NumberUtils.isCreatable(doubleString){
         System.out.println("Yayy! a double");
    }else{
         System.out.println("Oops!!!");
    }
}
所需:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>

org.apache.commons
commons-lang3
3.7

谢谢,这似乎正是我想要的。代码没有使用Double JavaDoc中包含的模式。但是它看起来足够复杂,可能会进行详尽的检查。除非其他人提出竞争解决方案,否则将接受您的答案。entry
numberrutils.isParsable(String)
,与
numbertils.iscreated()
不同,此方法不接受十六进制数字、科学符号或以任何类型限定符结尾的字符串,即“f”、“f”、“d”、“d”、“l”或“l”。此外
numbertils.iscreated()
将在
numbertils.iscreated”(“09”)中返回false
因为它将“09”视为一个八进制值,“09”不是一个有效的八进制数。在基准测试中,与
NumberUtils.iscreatible()相比,NumberUtils\u isParsable
更为理想