正则表达式匹配百分比(排除0%和100%) - Java示例
正则表达式匹配百分比,排除0%和100%,支持小数
要匹配不包含0%和100%的百分比,可以使用以下正则表达式:
^(0*[1-9]\d(\.\d{1,2})?|99\.\d{1,2}|[1-8]\d(\.\d{1,2})?)%$
这个正则表达式包含以下几个部分:
^: 匹配字符串的开头(0*[1-9]\d(\.\d{1,2})?): 匹配1到99.99之间的数字,允许小数点后两位,并允许前面有任意数量的0|: 匹配前一个或后一个99\.\d{1,2}: 匹配99.00到99.99之间的数字|[1-8]\d(\.\d{1,2})?: 匹配10到98.99之间的数字,允许小数点后两位%: 匹配百分号$: 匹配字符串的结尾
Java测试代码:
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String[] tests = {'0%', '50%', '99.99%', '100%', '101%', '50.0%', '80.123%'};
Pattern pattern = Pattern.compile('^(0*[1-9]\d(\.\d{1,2})?|99\.\d{1,2}|[1-8]\d(\.\d{1,2})?)%$');
for (String test : tests) {
System.out.println(test + ' is ' + (pattern.matcher(test).matches() ? 'valid' : 'invalid'));
}
}
}
输出结果:
0% is invalid
50% is valid
99.99% is valid
100% is invalid
101% is invalid
50.0% is valid
80.123% is valid
该测试代码验证了正则表达式能够正确地匹配不包含0%和100%的百分比,并支持小数。
原文地址: https://www.cveoy.top/t/topic/mwKD 著作权归作者所有。请勿转载和采集!