验证字符串的最佳方法和解决方案是什么,该字符串必须用点或逗号表示价格值并且最多有两个小数值?
RegExp
,java.text.DecimalFormat
或其他什么?
接受这些值:
1
11
1,05
2,5
1.05
2.5
我看到了这些解决方案,但这些并不是我想要的:
valdating a 'price' in a jtextfield
我也尝试使用此RegExp /^(\\d+(?:[\\.\\,]\\d{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
。
Pattern
和Matcher
,faster more经常使用正则表达式。例如:
final Pattern pattern = Pattern.compile(regExp);
// This can be repeated in a loop with different inputs:
Matcher matcher = pattern.matcher(input);
matcher.matches();
答案 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");
}
}