可以使用以下正则表达式来匹配不包含 0% 和 100% 的百分数,并且支持两位小数:

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

该正则表达式包含以下含义:

  • ^ 匹配字符串的开头。
  • (?!0%$|100%$) 负向前瞻,表示后面的内容不能是 '0%' 或 '100%'。
  • ([1-9]?\d(\.\d{1,2})?|0?\.\d{1,2}%) 匹配百分数,可以是整数或小数,小数点后最多保留两位。
  • $ 匹配字符串的结尾。

以下是用 Java 进行测试的代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        String regex = "^(?!0%$|100%$)([1-9]?\d(\.\d{1,2})?|0?\.\d{1,2}%)$";
        String[] tests = {"0%", "50%", "100%", "0.00%", "1.23%", "99.99%", "0.1%", "0.01%", "101%"};
        Pattern pattern = Pattern.compile(regex);
        for (String test : tests) {
            Matcher matcher = pattern.matcher(test);
            System.out.println(test + " is " + (matcher.matches() ? "valid" : "invalid"));
        }
    }
}

输出结果为:

0% is invalid
50% is valid
100% is invalid
0.00% is invalid
1.23% is valid
99.99% is valid
0.1% is valid
0.01% is valid
101% is invalid
Java 正则表达式匹配百分数 (排除 0% 和 100%)

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

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