正则表达式匹配百分比,排除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%的百分比,并支持小数。

正则表达式匹配百分比(排除0%和100%) - Java示例

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

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