javascript - KnockoutJS 验证 - 模型变量正则表达式的行为不符合预期

标签 javascript regex knockout.js

我有一个表单的 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,3333!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/

相关文章:

javascript - 如何在 javascript 中使用正则表达式在数字和字符/字符串之间插入空格

javascript - React Typescript 类型转换问题 - 解析错误 : Missing Semicolon

javascript - 带有数据的 jQuery Ajax 发布

regex - 匹配方括号 url 标签的正则表达式

jquery - 如何过滤可观察数组并返回相同的值

javascript - 将 Vue.JS 项目转换为 Nuxt.JS 项目

python - 正则表达式将变化字符串拆分为 groupdict

Java正则表达式返回字符串中的特殊字符

javascript - 使用 Knockout JS 搜索嵌套 json 数组的过滤器

javascript - 如何 knockout svg 文本元素?