正则表达式限制' n'小数点前后的数字

时间:2016-06-08 05:56:34

标签: javascript jquery regex validation

我需要一个正则表达式来限制十进制前的10位数和小数点后的2位数。我试过这个

if (!(/^\d{1,10}(\.$|\.\d{1,2}$|$)/).test(value)) {
  event.preventDefault();
  event.stopPropagation();
}
<input id="input" type="number" />

它适用于输入类型文本。但它不适用于类型编号。

Working Fiddle

请帮我解决这个问题

4 个答案:

答案 0 :(得分:1)

这应该有用。

if(! (/^[0-9]{10}\.[0-9]{2}$/).test(1234567890.12)) {
}

只需在代码中使用此正则表达式/^[0-9]{10}\.[0-9]{2}$/来验证值是十进制之前的10位还是之后的2位。

答案 1 :(得分:1)

<强>参数

  • oninput:检测input标记的即时更改。
  • max:设置最大值。
  • min:设置最小值。
  • type:设置所需的input标记类型。
  • value:设置当前值。
  • step:设置要上升或下降的金额。

//(function(object){object.value=parseFloat(object.value).toFixed(2);})(this)

//(function(object){var val=object.value;object.value=val.slice(0,val.indexOf('.')+3);})(this)
<input id="input" oninput="(function(object){object.value=parseFloat(object.value).toFixed(2);})(this)" type="number" value="0.00" step="0.01" min="0.00" max="9999999999.99" />

JSFiddle

答案 2 :(得分:1)

要限制小数点前和后的小数位,应该可以:

function ValidateDecimalInputs(e) {

    var beforeDecimal =3;
    var afterDecimal = 2;
   
    $('#'+e.id).on('input', function () {
        this.value = this.value
          .replace(/[^\d.]/g, '')            
          .replace(new RegExp("(^[\\d]{" + beforeDecimal + "})[\\d]", "g"), '$1') 
          .replace(/(\..*)\./g, '$1')         
          .replace(new RegExp("(\\.[\\d]{" + afterDecimal + "}).", "g"), '$1');   
    });
    }
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id = "textBox" onclick="ValidateDecimalInputs(this)"/>

答案 3 :(得分:0)

value=  (value.substr(0, value.indexOf(".")) + value.substr(value.indexOf("."), 2));

这将起作用,因为它将给出“。”之前的所有值。并且“.”之后只有 2 个值