我有一个表单的 knockout 模型,并且也使用 knockout 进行验证。一个特定的领域给我带来了问题。对文本框的要求是它应该允许任意数量的数字 [0-9],并且可以选择最多 2 位小数。我的变量如下所示
var debtIncomeRatio = ko.observable().extend({
required: {
onlyIf: function () {
return (isQualified() == "Qualified" && (!nonReportable() && !isFinanced()));
},
message: "* Required"
},
pattern: {
message: '* Number, no more than 2 decimal places',
params: '^[0-9]+(\.[0-9]{1,2})?'
}
});
上面的正则表达式 ^[0-9]+(\.[0-9]{1,2})?
应该适用于我读过的每个论坛和线程。我还在 https://regex101.com/ 等网站上测试过它,这验证了它应该有效。但实际上,当在我的表单上输入数据时,它允许诸如 33,33
、33!33
或任何代替小数的特殊字符。我是不是有什么地方写错了?或者有人知道为什么会这样吗?
最佳答案
尝试使用正则表达式文字而不是字符串。
pattern: {
message: '* Number, no more than 2 decimal places',
params: /^[0-9]+(\.[0-9]{1,2})?/
}
关于javascript - KnockoutJS 验证 - 模型变量正则表达式的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33770748/