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

时间:2019-04-25 10:23:54

标签: java regex

使用正则表达式使用十进制验证货币

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

  • 长度可以在1-6之间
  • 该货币可以包含或不包含十进制。
  • 十进制只允许一次。

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

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

,但不能验证第三个情况(只能允许小数一次)。 请帮助我提供您的意见。

1 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式,

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

在这里,(?=[\d.]{1,6}$)的正面肯定确保了文本的总长度为一到六个字符,\d+\.?\d+确保了数字的正确格式以及^和{{1} }是开始和结束锚,以确保完全匹配字符串,而不是部分字符串。

Regex Demo

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"));
});