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

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

RegExpjava.text.DecimalFormat还是其他什么?

接受这些值:

 1 11 1,05 2,5 1.05 2.5 

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

java decimal字符串格式

在jtextfield中对’价格’进行评估

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

使用此正则表达式:

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

它匹配一个或多个数字,后跟可选:逗号或句号,后跟1或2位数。

在Java中,您可以使用:

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

  • PatternMatcher ,使用正则表达式的频率越高 。 例:

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

测试。

你可以尝试这样的事情

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