^1001-9dd12$ 这个正则表达式怎么调整为不包含000000和100100010000支持小数并用java进行测试
可以使用负向零宽断言来排除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%的情况,支持小数,并且符合预期。
原文地址: http://www.cveoy.top/t/topic/7T8 著作权归作者所有。请勿转载和采集!