杰瑞科技汇

Java正则表达式如何精准匹配double?

Java正则表达式匹配Double类型数字

在Java中,可以使用正则表达式来匹配和验证Double类型的数字,以下是一些常用的正则表达式模式:

Java正则表达式如何精准匹配double?-图1
(图片来源网络,侵删)

基本Double匹配

String doubleRegex = "[-+]?[0-9]*\\.?[0-9]+";

这个模式可以匹配:

  • 可选的正负号 [-+]?
  • 可选的整数部分 [0-9]*
  • 可选的小数点 \\.?
  • 至少一位的小数部分 [0-9]+

更精确的Double匹配

String preciseDoubleRegex = "[-+]?[0-9]+(\\.[0-9]+)?([eE][-+]?[0-9]+)?";

这个模式可以匹配:

  • 可选的正负号
  • 整数部分(至少一位)
  • 可选的小数部分(小数点后至少一位)
  • 可选的科学计数法部分(e/E后跟可选正负号和数字)

完整Double匹配(包括边界情况)

String fullDoubleRegex = "[-+]?((\\d+\\.?\\d*)|(\\.\\d+))([eE][-+]?\\d+)?";

使用示例

import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class DoubleRegexExample {
    public static void main(String[] args) {
        String[] testCases = {
            "123", "123.45", "-123.45", "+123.45",
            ".45", "123.", "1.23e10", "1.23E-10",
            "abc", "123..45", "123..", "..45"
        };
        String doubleRegex = "[-+]?((\\d+\\.?\\d*)|(\\.\\d+))([eE][-+]?\\d+)?";
        Pattern pattern = Pattern.compile(doubleRegex);
        for (String testCase : testCases) {
            Matcher matcher = pattern.matcher(testCase);
            System.out.printf("%-10s -> %b%n", testCase, matcher.matches());
        }
    }
}

注意事项

  1. 这些正则表达式可以匹配字符串形式的Double,但不会验证数值是否在Double的范围内(如1.7976931348623157E308是Double的最大值)

  2. 如果需要验证数值范围,建议先使用正则表达式格式验证,然后尝试转换为Double类型并检查范围

    Java正则表达式如何精准匹配double?-图2
    (图片来源网络,侵删)
  3. 对于科学计数法,确保正则表达式包含了[eE][-+]?\\d+部分

  4. 如果需要严格匹配不允许前导/后导空格,可以在正则表达式两端添加^和锚点

String strictDoubleRegex = "^[-+]?((\\d+\\.?\\d*)|(\\.\\d+))([eE][-+]?\\d+)?$";

希望这些信息对你有帮助!

分享:
扫描分享到社交APP
上一篇
下一篇