如何检查字符串只包含数字和小数点?

use*_*481 12 java regex

例如,我想检查一下,当我分割我的字符串时,第一部分只包含数字和小数点.

我做了以下事情

String[] s1 = {"0.12.13.14-00000001-00000", "0.12.13.14-00000002-00000"};

        String[] parts_s1 = s1.split("-");
        System.out.println(parts_s1[0]);
        if(parts_s1[0].matches("[0-9]")
Run Code Online (Sandbox Code Playgroud)

但那仅仅是检查数字而不是小数.我怎样才能检查这个小数?例如,我想检查0.12.13.14是否有效,0.12.13.14x之类的东西不起作用.

man*_*uti 17

在正则表达式中添加点字符,如下所示:

if(parts_s1[0].matches("[0-9.]*")) {     // match a string containing digits or dots
Run Code Online (Sandbox Code Playgroud)

*是允许多个数字/小数点.

在情况下,至少一个数字/小数点是必需的,代替*具有+用于一个或多个出现.

编辑:

如果正则表达式需要匹配(正)十进制数字(不只是数字和小数点的任意序列),更好的模式将是:

if(parts_s1[0].matches("\\d*\\.?\\d+")) {    // match a decimal number
Run Code Online (Sandbox Code Playgroud)

注意\\d相当于[0-9].


das*_*ght 8

您只需在允许的字符列表中添加一个点:

if(parts_s1[0].matches("[.0-9]+")
Run Code Online (Sandbox Code Playgroud)

然而,这将匹配完全由点组成的字符串,或具有多个点的序列.


anu*_*ava 8

你可以使用这个正则表达式:

\\d+(\\.\\d+)*
Run Code Online (Sandbox Code Playgroud)

码:

if(parts_s1[0].matches("\\d+(\\.\\d+)*") {...}
Run Code Online (Sandbox Code Playgroud)