javascript - 用于数字验证的正则表达式

标签 javascript jquery regex validation

我需要有允许负号、百分号和小数的文本区域(或输入)。即 3000、-3.5、50%、-50.5% - 全部有效。
我找到了 this example并将正则表达式调整为

/^[\-]?[0-9]+\.?[0-9]*[%]{0,1}$/

我的问题是我无法在输入数字之前添加负号。

我的代码是:

$(function() {
  var pastValue, pastSelectionStart, pastSelectionEnd;

  $("textarea.aaa").on("keydown", function() {
    pastValue = this.value;
    pastSelectionStart = this.selectionStart;
    pastSelectionEnd = this.selectionEnd;
  }).on("input propertychange", function() {
    var regex = /^[\-]?[0-9]+\.?[0-9]*[%]{0,1}$/;

    if (this.value.length > 0 && !regex.test(this.value)) {
      this.value = pastValue;
      this.selectionStart = pastSelectionStart;
      this.selectionEnd = pastSelectionEnd;
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="myText" class="aaa" /></textarea>

最佳答案

片段中使用的正则表达式也允许减号。用户只能在开始时添加一次减号。您可以在按键事件中使用它,也无需仅在提交时使用它。请检查代码段以获得更多理解。

$(function() {
  var pastValue, pastSelectionStart, pastSelectionEnd;

  $("textarea.aaa").on("keydown", function() {
    pastValue = this.value;
    pastSelectionStart = this.selectionStart;
    pastSelectionEnd = this.selectionEnd;
  }).on("input propertychange", function() {
    var regex = /^-?\d*\.?\d{0,6}$/;

    if (this.value.length > 0 && !regex.test(this.value)) {
      this.value = pastValue;
      this.selectionStart = pastSelectionStart;
      this.selectionEnd = pastSelectionEnd;
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="myText" class="aaa" /></textarea>

关于javascript - 用于数字验证的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247001/

相关文章:

javascript - 如何在关闭类点击时隐藏技能div

c# - 从字符串正则表达式中提取数字

javascript - 正则表达式第一个结果 ($1) 替换为变量的属性

javascript - 链接重定向后可以加载图像/png数据吗?

javascript - 如何检查我是否传递 anchor

javascript - 将异步函数中的数组添加到传单 react 中不起作用

jquery 填充选择列表

javascript - 正则表达式匹配两个单词之间的字符串,其中结束边界词是可选的

javascript - 在浏览器控制台中访问 Webpack 包中的项目

javascript - 来自 span 的 Jquery 搜索字符串无法正常工作