【发布时间】:2012-07-02 18:52:18
【问题描述】:
我需要限制输入,以便用户只能输入美元金额。这意味着他们可以输入一串数字,可选地后跟一个小数和 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();
}
});
如果有一种智能且简洁的方式允许用户进行更正并使用键盘导航表单,我会很高兴听到它。
如果您有改进上述正则表达式的建议,请随时将其包含在您的答案中(如果您没有答案,请在评论中留下)。
谢谢!
【问题讨论】:
-
我会尝试这样的正则表达式:
\$?[0-9,]+\(?:.[0-9]{2})?。它将匹配$123,456.00和123456。 -
@Blender:谢谢,我会使用它,但他们实际上不希望在字段中输入逗号和美元符号。
标签: javascript regex validation whitelist