首页 > 解决方案 > 使用正则表达式使用 Decimal 验证货币

问题描述

使用正则表达式使用 Decimal 验证货币

大家好,我正在尝试在我的一个场景中使用正则表达式。所以我以字符串格式获取货币我必须检查以下情况

123.45 - 有效 1234.. - 无效 12.3 - 有效 123456 - 有效 123456.7 - 无效

我尝试了正则表达式 ^[0-9.]{1,6}$

但它不验证第三种情况(小数只允许一次)。请帮助我输入您的信息。

标签: javaregex

解决方案


你可以使用这个正则表达式,

^(?=[\d.]{1,6}$)\d+\.?\d+$

在这里,这种(?=[\d.]{1,6}$)积极的前瞻性确保文本的总长度为 1 到 6 个字符,并\d+\.?\d+确保数字格式正确,^并且$是开始和结束锚点,以确保完整的字符串匹配而不是部分匹配。

正则表达式演示

Java代码,

List<String> list = Arrays.asList("123.45","1234..","12.3","123456","123456.7");

list.forEach(x -> {
    System.out.println(x + " --> " + (x.matches("^(?=[\\d.]{1,6}$)\\d+\\.?\\d+$")?"Valid":"Invalid"));
});

输出,

123.45 --> Valid
1234.. --> Invalid
12.3 --> Valid
123456 --> Valid
123456.7 --> Invalid

推荐阅读