智能白名单,用于限制值输入

时间:2012-07-02 18:52:19

标签: javascript regex validation whitelist

我需要限制输入,以便用户只能输入美元金额。这意味着他们可以输入一串数字,可选地后跟一个十进制数字和0-2个数字。没有逗号,没有美元符号。

我发现我认为这是一个很好的模式,但我也希望允许用户使用退格键,输入,制表符等。我希望有一个更好的方法来做到这一点,而不是显式列出每个有效的键码我的白名单。我希望/\W/可以做到这一点,但唉,它匹配太多的按键。

这就是我现在所拥有的。

  $input.keypress(function(evt) {
    var ch = String.fromCharCode(evt.which);
    var val = evt.target.value + ch;
    var pattern = /^\d+(\.?(\d{1,2})?)$/;
    if (!pattern.test(val)) {
      evt.preventDefault();
    }
  });

如果有一种聪明而干净的方式允许用户进行更正并使用键盘导航表单,我很高兴听到它。

如果您有改进上述正则表达式的建议,请随时在答案中加入(如果您没有答案,请将其留在评论中)。

谢谢!

1 个答案:

答案 0 :(得分:1)

当我在我的代码中执行此操作时,我不会在keypress本身上运行正则表达式,而是在他们输入的字段的内容上运行。这样您就不必担心非打印字符了。你需要担心他们会切入场地,这也不会触发那个按键事件。