我正在尝试确保firebase中某个对象的某个字段是整数而不是小数。有一个方法isNumber(),但它返回true wheter值是整数或小数。
我尝试使用正则表达式检查一个值,但由于某种原因,它仅适用于引号内的值,即字符串。
这就是我的规则:
"$item_id":{
"created":{
".validate":"newData.val().matches(/^[0-9]+$/)"
}
}
所以当我放置一个像这样{"created":"123456789"}
的字符串值的对象时,验证工作正常。但是当我放置一个数值为{"created":123456789}
的对象时,验证失败。
有办法做到这一点吗?
答案 0 :(得分:6)
您不能使用正则表达式来验证数字,因为正则表达式匹配字符串中的模式。
您也无法真正验证某些内容是否为整数,因为JavaScript没有单独的整数与浮点类型。他们只是浮点数。
您可以验证的内容是某些内容是整数。我能提出的最简单的方法是:
".validate":"newData.isNumber() && newData.val() % 1 === 0.0"
接受1
和1.0
,但会拒绝1.1
。