将正则表达式转换为Javascript输入掩码

时间:2016-11-04 15:51:58

标签: javascript jquery jquery-inputmask

最终我想要一个只允许输入整数的掩码,或者输入一个十进制/句点:允许小数点后的0 - 2位。

有效输入

1
1.
1.1
1.11
111111111
111111111.
111111111.1
111111111.11

输入无效

a
a.
1.a
1.111
1.1111
  • string允许任意数量的数字字符,但只允许1个小数/句点
    • 如果存在句点/小数:只允许小数点后的2位数字

这个正则表达式就是这样:

^\d*\.?([\d]){0,2}$

现在我需要将它作为掩码应用于输入。我正在使用Robin Herbots' Inputmask。我真的在努力做这项工作。

我知道存在别名currency,但这并不完全符合要求。我想要的是输入默认为焦点/无焦点时为空白,除非有输入。 currency默认为0.00。我还想允许用户从字段中删除所有内容,因此它将为空白。 currency不允许您将输入留空。相反,它只允许您离开字段0.00

$('.moneyfield').inputmask("999", {rightAlign: true, numericInput: true});

特定的面具应该在“999”点。我无法弄清楚如何使用内置蒙版,所以这就是我试图将正则表达式插入蒙版的原因。到目前为止,我对这两种策略都没有成功。

另一种尝试是使用currency别名,然后将其覆盖到我想要它做的事情。我也没有成功。以下是currency掩码的定义:

    currency: {
        prefix: "$ ",
        groupSeparator: ",",
        alias: "numeric",
        placeholder: "0",
        autoGroup: !0,
        digits: 2,
        digitsOptional: !1,
        clearMaskOnLostFocus: !1
    }

1 个答案:

答案 0 :(得分:1)

我明白了。您只需覆盖currency别名中的几个字段:

$('.money_field').inputmask({alias: 'currency', rightAlign: true, placeholder: "", prefix: '', autoGroup: false, digitsOptional: true});