什么是Java中NUMERIC(p,s)的正则表达式

时间:2019-02-07 06:34:30

标签: java regex

想要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(”和“)”中的任何十进制值都为真

1 个答案:

答案 0 :(得分:1)

您的正则表达式^NUMERIC(\\d*\\.\\d+|\\d+\\.\\d*$)有一些小问题。您需要转义(并将它们写为\(,与)类似,写成\)。接下来,我认为您不需要轮换,因为您只想匹配十进制值,因此您可以像这样写\d*\.\d+,因为它可以匹配十进制前的可选数字,并且因为值必须是十进制, .之后必须至少有一位数字,因此将需要\d+。您可以使用此正则表达式,

^NUMERIC\(\d+\.\d+\)$

Demo

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