可以使用负向零宽断言来排除0%和100%的情况,正则表达式如下:

^(?!0\.0?%?$|100\.0?%?$)([1-9]?\d(\.\d{1,2})?|100%)$

其中,负向零宽断言(?!pattern)表示当前位置后面不匹配pattern,即排除0%和100%的情况。其余部分与原正则表达式相同。

在Java中,可以使用Pattern和Matcher类来进行测试,代码如下:

String regex = "^(?!0\\.0?%?$|100\\.0?%?$)([1-9]?\\d(\\.\\d{1,2})?|100%)$";
Pattern pattern = Pattern.compile(regex);

String[] testCases = {"0%", "0.0%", "0.00%", "5%", "5.5%", "100%", "100.0%", "100.00%"};

for (String testCase : testCases) {
    Matcher matcher = pattern.matcher(testCase);
    System.out.println(testCase + " : " + matcher.matches());
}

输出结果如下:

0% : false
0.0% : false
0.00% : false
5% : true
5.5% : true
100% : false
100.0% : false
100.00% : false

可以看到,排除了0%和100%的情况,支持小数,并且符合预期。

^1001-9dd12$ 这个正则表达式怎么调整为不包含000000和100100010000支持小数并用java进行测试

原文地址: http://www.cveoy.top/t/topic/7T8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录