fsk215 2011-08-06 15:19
浏览 214
已采纳

求java正则一枚

正数 不能大于100 小数点前只能有两位 可以有小数 也可不输入小数 小数最多为两位?
^[+]?(([1-9]\d{1,2}[.]?)|(0.))(\d{0,2})?$ 这个不对 哎.

  • 写回答

2条回答 默认 最新

  • wks1986 2011-08-06 15:35
    关注

    嗯,你那样就允许大于100的三位数了

    试试这个:
    我这里允许小数以0结尾,表示“近似值”的时候需要。如果不希望这样,改改也行。

    [code="java"]package regexptest;

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

    public class RegexpTest2 {

    public static void main(String[] args) {
        Pattern p = Pattern.compile("^[+]?(([1-9][0-9]?|0)(\\.[0-9]{1,2})?|100(\\.0{1,2})?)$");
    
        for (String txt : new String[] { "3.14", "31.41", "+3.14", "3.1", "42",
                "3", "-3.14", "100", "100.00", "100.01", "300", "3.141", "03.14"}) {
            Matcher m = p.matcher(txt);
            if (m.find()) {
                String result = m.group(0);
                System.out.println(result);
            } else {
                System.out.println(txt + " does not match");
            }
        }
    }
    

    }
    [/code]
    输出:
    [quote]
    3.14
    31.41
    +3.14
    3.1
    42
    3
    -3.14 does not match
    100
    100.00
    100.01 does not match
    300 does not match
    3.141 does not match
    03.14 does not match
    [/quote]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal