Java中的正则表达式:匹配正整数和小数

正则表达式(Regular Expressions,简称Regex)是一种用于搜索和匹配字符串的强大工具。在Java中,正则表达式可以用来处理输入验证、文本搜索和文本替换等任务。在本篇文章中,我们将探讨如何使用Java的正则表达式来匹配正整数和小数,并提供详细的代码示例。

一、正则表达式基础

正则表达式是由特殊字符组成的,它们定义了一个搜索模式。以下是一些常用的正则表达式符号:

符号 描述
\d 匹配任何数字
\D 匹配任何非数字
+ 匹配前一个表达式一次或多次
* 匹配前一个表达式零次或多次
? 匹配前一个表达式零次或一次

二、匹配正整数

一个正整数由一个或多个数字组成,不能以零开头(除非是0本身)。相应的正则表达式如下:

^[1-9]\d*$

这里的正则表达式解释如下:

  • ^ 表示字符串的起始位置
  • [1-9] 表示第一位必须是1到9中的一个数字(即不能为0)
  • \d* 表示后面可以跟任意数量的数字
  • $ 表示字符串的结束位置

示例代码:匹配正整数

下面是一个Java示例代码,用于检测输入是否为正整数。

import java.util.regex.Pattern;

public class PositiveIntegerValidator {
    private static final String POSITIVE_INTEGER_REGEX = "^[1-9]\\d*$";

    public static boolean isPositiveInteger(String input) {
        return Pattern.matches(POSITIVE_INTEGER_REGEX, input);
    }

    public static void main(String[] args) {
        String[] testInputs = { "123", "0", "-5", "007", "42" };

        for (String input : testInputs) {
            if (isPositiveInteger(input)) {
                System.out.println(input + " 是正整数");
            } else {
                System.out.println(input + " 不是正整数");
            }
        }
    }
}

执行结果

123 是正整数
0 不是正整数
-5 不是正整数
007 不是正整数
42 是正整数

三、匹配小数

小数可以是正数或负数,且应该包含一个小数点。我们可以使用以下的正则表达式来匹配正小数:

^(0|[1-9]\d*)(\.\d+)?$

正则表达式解析:

  • ^ 表示开始
  • 0|[1-9]\d* 表示可以是0或是非0数字的整数部分
  • (\.\d+)? 表示小数部分,可选的且以'点'开始,后面跟一个或多个数字
  • $ 表示结束

示例代码:匹配小数

以下是一个Java示例代码,用于检测输入是否为正小数。

import java.util.regex.Pattern;

public class PositiveDecimalValidator {
    private static final String POSITIVE_DECIMAL_REGEX = "^(0|[1-9]\\d*)(\\.\\d+)?$";

    public static boolean isPositiveDecimal(String input) {
        return Pattern.matches(POSITIVE_DECIMAL_REGEX, input);
    }

    public static void main(String[] args) {
        String[] testInputs = { "0", "12.34", "0.5", "-1.23", "100.", ".45", "100.200" };

        for (String input : testInputs) {
            if (isPositiveDecimal(input)) {
                System.out.println(input + " 是正小数");
            } else {
                System.out.println(input + " 不是正小数");
            }
        }
    }
}

执行结果

0 不是正小数
12.34 是正小数
0.5 是正小数
-1.23 不是正小数
100. 是正小数
.45 不是正小数
100.200 是正小数

四、正则表达式类图

为了更好地理解正则表达式在Java中的使用,我们可以使用类图来表示各个验证器类之间的关系。以下是使用mermaid语法的类图:

classDiagram
    class PositiveIntegerValidator {
        +isPositiveInteger(String input)
    }
    
    class PositiveDecimalValidator {
        +isPositiveDecimal(String input)
    }

    PositiveIntegerValidator --|> PositiveDecimalValidator: validates

结尾

正则表达式是Java中一种强大而灵活的文本处理方式。在本篇文章中,我们深入探讨了如何使用正则表达式来匹配正整数和小数。通过实际的代码示例,我们展示了如何实现这类输入验证。掌握正则表达式的用法,将使我们在开发中更加游刃有余,能够有效处理各种数据格式的验证问题。希望本文对你理解Java中的正则表达式有所帮助。如果你有其他问题或想进一步了解的主题,随时可以提问!