使用正则表达式使用十进制验证货币
大家好, 我正在尝试为我的一种情况使用正则表达式。 所以我以字符串格式获取货币,我必须检查以下情况
123.45-有效 1234 ..-无效 12.3-有效 123456-有效 123456.7-无效
我尝试了正则表达式^ [0-9。] {1,6} $
,但不能验证第三个情况(只能允许小数一次)。 请帮助我提供您的意见。
答案 0 :(得分:2)
您可以使用此正则表达式,
^(?=[\d.]{1,6}$)\d+\.?\d+$
在这里,(?=[\d.]{1,6}$)
的正面肯定确保了文本的总长度为一到六个字符,\d+\.?\d+
确保了数字的正确格式以及^
和{{1} }是开始和结束锚,以确保完全匹配字符串,而不是部分字符串。
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"));
});