在使用正则表达式键入时强制输入字段中的特定格式

时间:2014-06-30 10:46:00

标签: javascript regex

我希望阻止使用任何其他格式,而不是在字段中正式更正百分比,而即使执行击键也不会显示任何其他输入。

现在我有以下代码,不允许我实现我的结果:

$("input").keypress(function (e) {
var regex = /\d{1,4}\.?\d{0,3}/g;
var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (!regex.test(key)) {
    e.preventDefault ? e.preventDefault() : e.returnValue = false;
}
});

虽然有许多选项可以验证事后,例如使用按钮,我真的希望在用户输入时即时使用它。但是,这个表达式甚至不允许我在第一个数字后插入一个小数点。

1 个答案:

答案 0 :(得分:2)

不是JS开发人员(欢迎提出意见!),但现在您正在针对单个密钥测试正则表达式,因此只允许使用数字密钥。

假设您只想允许1-4位数字,可能后跟.和最多三位数字,您可以使用正则表达式:

/^\d{1,4}(?:\.\d{0,3})?$/

(?:...)是非捕获组,^$是匹配字符串开头和结尾的锚点。请注意,此表单还允许结束.(例如1234.)。

在JS代码中,这给出了(参见fiddle here):

var regex = /^\d{1,4}(?:\.\d{0,3})?$/;
$("input").keypress(function (e) {
    var key = String.fromCharCode(!e.charCode ? e.which : e.charCode);
    if (!regex.test($("input").val() + key)) {
        e.preventDefault ? e.preventDefault() : e.returnValue = false;
    }
});