正则表达式 java \\d+.?\\d+ 输入5后,表示不是数呢?

高分请问一下,正则表达式 java \\d+.?\\d+ 输入5后,表示不是数呢??

import java.util.*;
import java.util.regex.*;
class Regex
{
public static void main(String[] args)
{
String a= "5";

if(isNumeric(a)){
System.out.print("It is Number");
}
}
public static boolean isNumeric(String str){
return Pattern.matches("\\d+.?\\d+", str);
}
}
我明白你的回答了。

\\d+.?\\d+
5时,false ,原因是它只有1位,要求是至少有2位数字- 有两个 \\d+
最新回答
┌胖胖糖〃

2024-08-16 02:43:27

\\d+表示至少有一个数字
.?表示有或没有任意字符
你是想匹配整数或小数
应该写成
"\\d+(\\.\\d+)?"
即整数部分必须有
小数点和小数部门最多有一个
追问
感谢你的关注,能这么快有回复。

.? 表示 有或没有.

那么输入500的时候,怎么可以呢?500 的时候会返回true
它500也没有小数点呢
追答
"\\d+.?\\d+"匹配的是一个或多个数字后面跟一个或0个任意字符后面再跟一个或多个数字
500是符合的
注意.?表示0个或1个任意字符,不表示0个或1个小数点
"\\d+(\\.\\d+)?"中的前面部门\\d匹配1个或多个数字(即整数部分)
后面的(\\.\\d+)?匹配空字符串或者以小数点开始后面跟1个或多个数字(即小数部分,小数部分可以为空)