仅在输入中筛选带点的整数和点后一位



我有下面的代码。它运行良好,但我对点后的位置有点小问题。我可以在一个点后加上许多整数。我需要限制在一个点后只有一个整数。我该怎么办?

function validateNumber() {
var clean = this.value.replace(/[^0-9.]/g, "").replace(/(,.*?),(.*,)?/, "$1");
if (clean !== this.value) 
this.value = clean;
}
document.querySelector('.number-mask').oninput = validateNumber;

要在逗号值后只允许一个整数,需要修改正则表达式。第一个替换需要将.更改为,,以允许输入逗号。在第二个正则表达式中,您需要将其更改为只保留逗号后的第一个值,这可以使用捕获组来完成。试试这个:

function validateNumber() {
var clean = this.value.replace(/[^0-9,]/g, "").replace(/(,d)d+?/, "$1");
if (clean !== this.value) 
this.value = clean;
}
document.querySelector('.number-mask').addEventListener('input', validateNumber);
<input type="text" class="number-mask" />

还应注意,addEventListener()的使用优于onX属性。

对不起,我翻译错了。我需要点。我需要整数。整数点后一位

在这种情况下,您不需要修改第一个正则表达式:

function validateNumber() {
var clean = this.value.replace(/[^0-9.]/g, "").replace(/(.).{2,}/g, "$1").replace(/(.d)d+?/, "$1");
if (clean !== this.value) 
this.value = clean;
}
document.querySelector('.number-mask').addEventListener('input', validateNumber);
<input type="text" class="number-mask" />

最新更新