Java用逗号或点和两位小数值验证价格

时间:2013-07-23 08:18:34

标签: java regex

验证字符串的最佳方法和解决方案是什么,该字符串必须用点或逗号表示价格值并且最多有两个小数值?

RegExpjava.text.DecimalFormat或其他什么?

接受这些值:

1
11

1,05
2,5

1.05
2.5

我看到了这些解决方案,但这些并不是我想要的:

java decimal String format

valdating a 'price' in a jtextfield

我也尝试使用此RegExp /^(\\d+(?:[\\.\\,]\\d{2})?)$/,但它不起作用。

2 个答案:

答案 0 :(得分:17)

使用此正则表达式:

final String regExp = "[0-9]+([,.][0-9]{1,2})?";

匹配1位或更多位数,后跟可选:逗号或句号,后跟1或2位数。

在Java中,您可以使用:

  • String.matches(String regex)简单验证String。例如:"1.05".matches(regExp)返回true

  • PatternMatcherfaster more经常使用正则表达式。例如:

    final Pattern pattern = Pattern.compile(regExp);
    
    // This can be repeated in a loop with different inputs:
    Matcher matcher = pattern.matcher(input); 
    matcher.matches();
    

Test.

答案 1 :(得分:0)

您可以尝试这样的事情

 String str="1,05";
    String[] dotSub=str.split("\\.|,");
    if(dotSub.length==2){
         if(dotSub[1].length()<=2){
             System.out.println("valid price");
         }
         else{
             System.out.println("not a valid price");
         }
    }
    else{
        System.out.println("not a valid price");
    }
}