【问题标题】:jQuery - JavaScript regex allow only numeric and minus sign as first characterjQuery - JavaScript 正则表达式只允许数字和减号作为第一个字符
【发布时间】:2020-08-26 12:24:06
【问题描述】:

我希望用户只在我的输入中输入数值,因此我在下面放了代码。

<input type="text" class="form-control rounded-pill bg-light" autocomplete="off" name="free_credit_amount" id="free_credit_amount" placeholder="Free credit amount">

$('body').on('keyup', '#free_credit_amount', function(){
    this.value = this.value.replace(/[^0-9\.]/g,'');
});

这对我来说很好......但是我有一个要求,用户也可以输入负值......像-500 ,因此我已经更新了我的 JavaScript 正则表达式,如下所示 ..

$('body').on('keyup', '#free_credit_amount', function(){   
   this.value = this.value.replace(/[^-0-9]/g,'');
});

这对我来说也很好用,因为我可以输入 minus (-) 符号并可以输入类似 500-500 的值,但是,我想稍微提供一下这个正则表达式 .. 目前正在发生什么,我也可以输入像500- 这样的值。这不应该被允许..我只希望我的minus (-) 仅作为第一个字符添加..

我尝试过使用其他各种正则表达式,例如 this.value = this.value.replace(/(\+|\-)?[^-0-9]/g,''); this.value = this.value.replace(/^[-][a-zA-Z0-9.,$;]/g,'');

但是那些正则表达式都不适合我..

有人可以帮我实现这一目标吗..

谢谢

【问题讨论】:

  • 试试this.value.replace(/[^-0-9]+/g,'').replace(/^(-)|-+/g,'$1')
  • 这种干扰用户输入的问题在于,用户可能会觉得他们的键盘坏了。他们还想知道为什么有时他们移动到输入开头的插入符号突然移动到结尾。这根本不是用户友好的。

标签: javascript jquery regex


【解决方案1】:

你可以使用

$('body').on('input', '#free_credit_amount', function(){
    var position = this.selectionStart;
    var oldval = this.value;
    var newval = this.value.replace(/[^0-9.-]/g, '').replace(/^(-)|-+/g,'$1').replace(/^([^.]*\.)|\.+/g, '$1');
    this.value = newval;
    if (oldval != newval) {
        this.selectionEnd = position-1;
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="form-control rounded-pill bg-light" autocomplete="off" name="free_credit_amount" id="free_credit_amount" placeholder="Free credit amount">

这里,

  • .replace(/[^0-9.-]/g, '') - 删除除数字、点和连字符以外的所有字符
  • .replace(/^(-)|-+/g,'$1') - 将连字符保留在字符串的开头并删除所有其他连字符
  • .replace(/^([^.]*\.)|\.+/g, '$1') - 保留除 . 和第一个 . 之外的任意数量的文本,并删除字符串中的所有其他点

【讨论】:

  • 壮丽.. 谢谢.. 工作就像一个魅力。
猜你喜欢
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多