javascript - 正则表达式仅允许数字且最多 2 位数字

标签 javascript regex typescript

我正在开发一个输入字段,该字段应允许用户输入 0 到 99 之间的数字。此外,不应允许用户输入第三位数字。

为了解决上述问题,我有以下正则表达式 /^([0-9]{2})$/

我有以下在按键事件上触发的函数

    onlyAllowNumbers(evnt: KeyboardEvent): boolean {
        const charCode = evnt.key;
        const pattern = /^([0-9]{2})$/;

        return pattern.test(charCode);
}

上述模式不允许我在输入字段中输入任何数字。

最佳答案

我建议更新正则表达式以允许 0 或 2 位数字 - /^[0-9]{0,2}$/

以下值将匹配:''、'0'、'1'、...'10'、...'99'。

keypress 事件具有以下字段:

  • event.target.value - 按下新键之前输入的值
  • event.key - 按下的键的字符串值

event.target.valueevent.key组合在一起时,我们可以估计输入的新值。

如果结果值与所需模式不匹配,

event.preventDefault() 调用可用于阻止按键事件。

document.getElementById('myinput').addEventListener('keypress', event => {
    if (!`${event.target.value}${event.key}`.match(/^[0-9]{0,2}$/)) {
        // block the input if result does not match
        event.preventDefault();
        event.stopPropagation();
        return false;
    }
});
<input id="myinput" type="text" value="" />

关于javascript - 正则表达式仅允许数字且最多 2 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68627774/

相关文章:

regex - 在 Unix 命令/脚本中查找该行的前 4 个字符应为 "ORA-",接下来的 5 个字符应为数字

typescript - 如何在不破坏 localStorage 类型的情况下存储和获取对象?

angularjs - angular2 + Selenium 网络驱动程序 : Can't resolve 'child_process

angular - 如何在 Angular 8+ 中实现 Pendo

javascript - 如何拖动侧边栏?

Javascript 使用正则表达式分割数字和字符串

javascript - 如何通过单击按钮将 d3.js 图的 csv 数据集切换到另一个 csv

javascript - 不包括点、括号等的正则表达式边界

javascript - 如何等待来自 async/await 去抖 axios 调用的数据

javascript - 代码在 Codepen 中有效,但不适用于我的桌面文件