[英]Regular expression to restrict 'n' digits before and after decimal point
我需要一個正則表達式來限制小數點前 10 位和小數點后 2 位。 我試過這個
if (!(/^\d{1,10}(\.$|\.\d{1,2}$|$)/).test(value)) {
event.preventDefault();
event.stopPropagation();
}
<input id="input" type="number" />
它適用於輸入類型text 。但它不適用於類型 number。
請幫我解決這個問題
這應該工作。
if(! (/^[0-9]{10}\.[0-9]{2}$/).test(1234567890.12)) {
}
只需在您的代碼中使用此正則表達式/^[0-9]{10}\\.[0-9]{2}$/
來驗證值是否為小數點前的10位數字和小數點后的2位數字。
參量
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" />
要限制小數點之前和之后的小數位,這應該起作用:
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)"/>
value= (value.substr(0, value.indexOf(".")) + value.substr(value.indexOf("."), 2));
這將起作用,因為它將在“。”之前給出所有值。 並且“.”之后只有 2 個值
這對我有用,即使是數字類型。
查詢
$("body").on("keyup", ".patternCheck", function(){
if(this.value.match(/^[0-9]{1,10}[.]{1}[0-9]{1,2}$/) == null)
{
$(this).val($(this).attr("pval"));
}
else
{
$(this).attr("pval", $(this).val());
}
});
HTML
<input type="number" value="0.0" pval="0.0" class="patternCheck">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.