【问题标题】:Regex Javascript block Input正则表达式 Javascript 块输入
【发布时间】:2021-09-16 14:57:13
【问题描述】:

我刚刚构建了一个带有正则表达式控件的 javascript 函数,该控件允许 3 个数字和一个点。

function restrictNumber(e) {
  var newValue = this.value.replace(new RegExp(/^(?!^(?:\d{1,3}|\d(?:\d?\.\d?|\.\d{2}))$).*/, 'gm'), "");
  this.value = newValue;
}

$('.decimal').on('input', restrictNumber);
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<input class="decimal" type="text">

正则表达式的规格是:

  • 最大。 3 个数字
  • 只有一个点或没有点
  • 点可以在任何地方

这是一个正则表达式演示:https://regex101.com/r/3Ru1O3/3/

当放入不合适的字符时,我试图“阻止”输入。但是当我尝试测试它时,它会删除我的孔串。

我怎样才能改变我无法设置新数字的行为,让字符串不会消失。

【问题讨论】:

    标签: javascript regex validation


    【解决方案1】:

    您没有说太多关于您的实际要求,例如,如果在某个位置值需要小数等。但根据您现有的正则表达式所做的,它肯定可以缩短。

    function restrictNumber(e) {
      var newValue = this.value.replace(/[^\d\.]/, "").substr(0,4);
      this.value = newValue;
    }
    
    $('.decimal').on('input', restrictNumber);
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <input class="decimal" type="text">

    【讨论】:

    • 您好,感谢您的回答,但问题是人们不应添加超过 3 个数字。
    • @lvollmer - 好的,那么小数位呢?是必需的吗?它必须在某个位置吗?你为什么不在问题中提供整个规范,而不是让我重做我的答案。
    • @我曾经和一只熊搏斗过。是的,抱歉我更新了问题。
    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 2023-04-09
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多