使用正则表达式使用 Decimal 验证货币大家好,我正在尝试在我的一个场景中使用正则表达式。所以我以字符串格式获取货币我必须检查以下情况长度可以在 1-6 之间货币可能包含也可能不包含小数。十进制只允许一次。123.45 - 有效 1234.. - 无效 12.3 - 有效 123456 - 有效 123456.7 - 无效我尝试了正则表达式 ^[0-9.]{1,6}$但它不验证第三种情况(小数只允许一次)。请帮助我输入您的信息。
1 回答
富国沪深
TA贡献1790条经验 获得超9个赞
你可以使用这个正则表达式,
^(?=[\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
添加回答
举报
0/150
提交
取消