杰瑞科技汇

Java正则如何精准验证数字?

Java 正则表达式验证数字

在 Java 中,可以使用正则表达式来验证字符串是否为数字,以下是几种常见的数字验证方式:

Java正则如何精准验证数字?-图1
(图片来源网络,侵删)

基本整数验证

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class NumberValidator {
    public static boolean isInteger(String str) {
        // 匹配正整数、负整数和0
        Pattern pattern = Pattern.compile("^-?\\d+$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
    public static void main(String[] args) {
        System.out.println(isInteger("123"));    // true
        System.out.println(isInteger("-456"));   // true
        System.out.println(isInteger("0"));      // true
        System.out.println(isInteger("12.3"));   // false
        System.out.println(isInteger("abc"));    // false
    }
}

浮点数验证

public class NumberValidator {
    public static boolean isDouble(String str) {
        // 匹配浮点数(包括正负号、小数点)
        Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
    public static void main(String[] args) {
        System.out.println(isDouble("123.45"));  // true
        System.out.println(isDouble("-0.789"));  // true
        System.out.println(isDouble(".5"));      // false (可选,根据需求调整)
        System.out.println(isDouble("123"));     // true (整数也是有效的浮点数)
        System.out.println(isDouble("abc"));     // false
    }
}

科学计数法数字验证

public class NumberValidator {
    public static boolean isScientificNumber(String str) {
        // 匹配科学计数法数字
        Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?[eE][-+]?\\d+$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
    public static void main(String[] args) {
        System.out.println(isScientificNumber("1.23e-4"));  // true
        System.out.println(isScientificNumber("5E10"));     // true
        System.out.println(isScientificNumber("1e5"));      // true
        System.out.println(isScientificNumber("1e"));       // false
        System.out.println(isScientificNumber("abc"));      // false
    }
}

更严格的数字验证(不允许前导零)

public class NumberValidator {
    public static boolean isStrictNumber(String str) {
        // 严格匹配数字(不允许前导零,除非是0本身)
        Pattern pattern = Pattern.compile("^(0|[1-9]\\d*)(\\.\\d+)?$");
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
    public static void main(String[] args) {
        System.out.println(isStrictNumber("123"));    // true
        System.out.println(isStrictNumber("0"));      // true
        System.out.println(isStrictNumber("0.45"));   // true
        System.out.println(isStrictNumber("01"));     // false
        System.out.println(isStrictNumber("00.5"));   // false
    }
}

使用 Java 内置方法验证

除了正则表达式,Java 还提供了内置方法来验证数字:

public class NumberValidator {
    public static boolean isNumeric(String str) {
        try {
            Double.parseDouble(str);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }
    public static void main(String[] args) {
        System.out.println(isNumeric("123"));    // true
        System.out.println(isNumeric("12.3"));   // true
        System.out.println(isNumeric("1e5"));    // true
        System.out.println(isNumeric("abc"));   // false
    }
}

注意事项

  1. 正则表达式中的 ^ 和 分别表示字符串的开始和结束,确保整个字符串匹配
  2. \d 表示数字字符,等同于 [0-9]
  3. 表示前面的元素出现0次或1次
  4. 表示前面的元素出现1次或多次
  5. 如果需要更复杂的数字验证,可以组合使用这些元字符

选择哪种方法取决于你的具体需求,比如是否需要支持负数、小数、科学计数法等。

Java正则如何精准验证数字?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇