我需要一个正则表达式来限制十进制前的10位数和小数点后的2位数。我试过这个
if (!(/^\d{1,10}(\.$|\.\d{1,2}$|$)/).test(value)) {
event.preventDefault();
event.stopPropagation();
}
<input id="input" type="number" />
它适用于输入类型文本。但它不适用于类型编号。
请帮我解决这个问题
答案 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" />
答案 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 个值