Double dbl = 0.003;
String str = dbl.toString();
str.matches("^\\d{1,7}\\.?\\d{1,3}$");
regex
返回false
。
str
值返回 0.0030
正则表达式失败,这与浮动问题不同。
答案 0 :(得分:1)
确实表现正常(我的意思是正则表达式)。你已经将数字限制在小数点后面的三位数,你给它四位。
我建议修改字符串以删除尾随零(假设它们当然是在小数点之后),或者更改正则表达式以使其适合。
前者可以通过以下方式完成:
str.matches("^\\d{1,7}\\.?\\d{1,3}0*$");
后者涉及在正则表达式的末尾添加零:
str.matches("^\\d{1,7}(\\.\\d{1,3})?$");
您可能还需要考虑将小数位和小数位放入一个组中,无论您选择哪种方法。换句话说,比如:
var name = $scope.user.firstname.split(" ");
console.log(name[0]) // first name;
if(name.length>1)
console.log(name[1]) // last name
现在,正则表达式也将接受一个10位数的整数。
答案 1 :(得分:1)
正如我在你的另一个question中指出的那样,你只是遇到了已知的错误 -
http://bugs.java.com/view_bug.do?bug_id=4428022
0050 不是3个字符长。因此, false 。您可以尝试更新JDK环境或使用printf。在我的JDK7中,我得到了 -
0.005
真