Java用逗号或点和两位小数值validation价格
什么是validation字符串的最佳方法和解决方案,该字符串必须用点或逗号表示价格值并且最多有两个小数值?
RegExp
, java.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
。 -
Pattern
和Matcher
,使用正则表达式的频率越高 。 例: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"); } }