鍍金池/ 問答/HTML/ 正則匹配數(shù)字

正則匹配數(shù)字

正則匹配任意數(shù)字,用于限制輸入

使用 this.value = this.value.replace('/[^\D]/g',''),這樣能替換所有的非數(shù)字的值,但是小數(shù)點(diǎn)匹配做不到。如何才能做到匹配小數(shù)點(diǎn)呢。
/^\d+(\.\d+)?$/ 用這個(gè)正則能匹配 任意數(shù)字,但是這樣用于判斷,卻不能用于限制輸入。如何處理這個(gè)問題?

回答
編輯回答
墨小白

反過來思考,先判斷,后限制。

// 僅在不能通過驗(yàn)證的時(shí)候才替換
if (!/^\d+(\.\d+)?$/.test(this.value)) {
    var t = this.value.match(/\d+(\.\d+)?/);
    this.value = t ? t[0] : "";
}
2018年2月17日 21:31
編輯回答
念初

謝謝你的回答,我知道了解決的辦法,分享一下

var reg = /^(\d{0,13})(\.\d{0,2})?(.+)?$/;
$('[type="text"]').on('input', function( e ){
    this.value = this.value.replace(reg,'$1$2');
});

這樣就可以了,就實(shí)現(xiàn)了小數(shù)點(diǎn)前面只能輸入0-13位,小數(shù)點(diǎn)后只能輸入0-2位

2018年2月27日 21:18