Java 正则表达式与价格验证:保留两位小数

在编写 Java 应用程序时,常常需要验证用户输入的数据是否符合特定的格式。其中,价格的格式通常是一个需要特别注意的点。在许多情况下,我们希望价格的格式仅限于两位小数,比如“123.45”或“0.99”。这就需要用到正则表达式(Regex),它可以帮助我们精确地匹配指定格式的字符串。

正则表达式基础

正则表达式是一种文本字符串,用于描述一组字符串的匹配规则。在 Java 中,使用 java.util.regex 包提供对正则表达式的支持。基本的使用步骤包括创建一个正则模式、编译这个模式、然后使用它来匹配输入字符串。

常用符号

  • ^ 表示字符串开始。
  • $ 表示字符串结束。
  • \d 表示任意一个数字。
  • \. 表示字面意义的点。
  • ? 表示前面的符号可以零次或一次,而 * 表示可以零次或多次。

价格的正则表达式

我们要匹配的价格通常是带有两个小数位的数字,且可能包括一个可选的整数部分。因此,正则表达式的标准形式如下:

^\d+(\.\d{1,2})?$

这个正则表达式的含义为:

  1. ^\d+:以一个或多个数字开头。
  2. (\.\d{1,2})?:然后可以有一个可选的小数点,后面跟着一到两位数字。
  3. $:字符串的结束。

示例代码

下面是一个 Java 类的示例,演示如何使用上述正则表达式来验证价格格式:

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

public class PriceValidator {
    private static final String PRICE_REGEX = "^\\d+(\\.\\d{1,2})?$";

    public static boolean isValidPrice(String price) {
        Pattern pattern = Pattern.compile(PRICE_REGEX);
        Matcher matcher = pattern.matcher(price);
        return matcher.matches();
    }

    public static void main(String[] args) {
        String[] testPrices = { "123.45", "0.99", "1000", "123.456", "abc", "-123.45" };

        for (String price : testPrices) {
            System.out.println(price + " is valid: " + isValidPrice(price));
        }
    }
}

代码说明

  1. 导入所需包:引入正则表达式相关的类。
  2. 定义正则表达式:创建了一个静态的正则表达式常量。
  3. 匹配函数isValidPrice方法用于判断给定的价格格式是否合法。
  4. 主方法测试:通过一组测试数据来验证我们的正则表达式是否有效。

运行效果

上述代码运行的效果将输出每一个测试价格是否符合格式:

123.45 is valid: true
0.99 is valid: true
1000 is valid: true
123.456 is valid: false
abc is valid: false
-123.45 is valid: false

概念图与状态图

为了更直观地理解价格验证的流程,我们可以使用 ER 图和状态图来展示。

ER 图

erDiagram
    PRICE {
        string price
        boolean isValid
    }
    PriceValidator }o--o{ PRICE: verifies

在以上的 ER 图中,PRICE 表示价格的对象,其中包含了价格和验证状况。PriceValidator 类的作用是验证这些价格。

状态图

stateDiagram
    [*] --> Validating
    Validating --> Valid : matches regex
    Validating --> Invalid : does not match regex
    Valid --> [*]
    Invalid --> [*]

状态图展示了价格验证的不同状态:初始状态到验证状态,再根据正则表达式的匹配结果转到有效或无效状态。

小结

在这篇文章中,我们探讨了如何使用 Java 的正则表达式来验证价格的格式。通过正则表达式,我们可以有效地确保用户输入的数据符合预期的格式,从而提升程序的健壮性和用户体验。通过代码示例、ER 图和状态图,我们更直观地理解了这个过程。

掌握正则表达式的使用不仅能帮助我们实现价格的验证,还是其他许多字符串处理功能的重要工具。如果你在开发中遇到类似的需要,可以参考本文提供的示例和讨论。希望这篇文章对你的学习和工作有所帮助!