想要NUMERIC(p,s)NUMERIC的正则表达式将一直存在,我只想检查方括号内我的值是否为小数。 例如NUMERIC(10.20),因此我的正则表达式还将包含“ NUMERIC(”,十进制检查和“)”
我尝试进行十进制检查,但是在正则表达式中无法获得带有“(”和“)”的NUMERIC “ ^ \ d * \。\ d + | \ d + \。\ d * $”
private boolean getRegex() {
String valueType="NUMERIC(10.78)";
String regex = "^NUMERIC(\\d*\\.\\d+|\\d+\\.\\d*$)";
return valueType.matches(regex);
}
预期结果是正则表达式,它将使我对“ NUMERIC(”和“)”中的任何十进制值都为真
答案 0 :(得分:1)
您的正则表达式^NUMERIC(\\d*\\.\\d+|\\d+\\.\\d*$)
有一些小问题。您需要转义(
并将它们写为\(
,与)
类似,写成\)
。接下来,我认为您不需要轮换,因为您只想匹配十进制值,因此您可以像这样写\d*\.\d+
,因为它可以匹配十进制前的可选数字,并且因为值必须是十进制, .
之后必须至少有一位数字,因此将需要\d+
。您可以使用此正则表达式,
^NUMERIC\(\d+\.\d+\)$
Java代码
List<String> list = Arrays.asList("NUMERIC(10.78)","NUMERIC(.78)","NUMERIC(1078)");
list.forEach(x -> System.out.println(x + " --> "+x.matches("^NUMERIC\\(\\d+\\.\\d+\\)$")));
打印
NUMERIC(10.78) --> true
NUMERIC(.78) --> false
NUMERIC(1078) --> false