2017-12-15 5 views
3

は、テキストフィールドが下に続くregxまたはパターン - 同じ文字を複数回入力するのを防ぐにはどうすればよいですか?

としてだけ進数と数の値を入力することができるようにしようとしていますが

有効

.099 
    .8 
    10 
    99.9 
    2.9 
    4.88 
    0.0 
ある無効

abc 
ac$%$ 
asdf90 
09.89abg#$# 
-903abe 
+8938/.99 
....90.97 

すべてが今のところ大丈夫です。私は、ユーザーが小数点または小数点以下の小数点を数字なしで入力すると、テキストフィールドの境界線を強調表示したいと考えています。有効な入力があったときにハイライトが削除されるはずです。

以下のコードを非常に簡単にする方法。

<input type = "text" maxlength = 4, value ="0.0", min=0 max=100/> 

$(key).bind("#txtOne", function(obj){ // but i dont know why this Jquery allow character be entered sometimes 
    let numberOnly=/^[0-9]+\\.?[0-9]*$/;      
    if (!numberOnly) { 
     return obj.preventDefault(); 
    }else{ 
     return true; 
    } 
}); 

$("#txtOne").on("keypress keyup blur", function(event) { //after including this, working as expect 
    $(this).val($(this).val().replace(/[^0-9\.]/g, '')); 
    if ((event.which != 46 || $(this).val().indexOf('.') != -1) && (event.which < 48 || event.which > 57)) { 
    event.preventDefault(); 
    } 
}); 

助けを惜しみません。

可能な場合は、私にいくつかのフィドル例

+1

あなたは、いくつかの無効なケースを与えることはできますか? –

+0

こんにちは@TreeNguyen plsチェック私は無効なデータで自分の投稿を編集しました。 これにジャンプしてくれてありがとう –

+1

個々のキーをチェックするのではなく、単に 'keyup'で' isNaN'をチェックすることはできませんか? – gurvinder372

答えて

1

を与えてください、事前に感謝あなたは、この正規表現を使用しているように見える:それは、.を持っている行末以外のすべてを一致するため

^[0-9]+\\.?[0-9]*$ 

この正規表現は、文字を許可します。 \\の部分は、ではなく、で、リテラル.と一致するようにエスケープしています。

これを修正するには、\のいずれかを削除してみてください。これはデリミタ\...\の内側にあるため、\をエスケープする必要はありません。また、正負の符号が一致する

^(?:[+-])?(?:\d*\.)?\d+$ 

代わりに、私はこの正規表現を書きました。

EDIT:

私はちょうどあなたの正規表現をテストし、それが.999123.などの先頭または末尾のピリオドと一致しないことがわかりました。

ここにオンラインに私の正規表現を試してみてください:https://regex101.com/r/eSM2CK/1

+0

^[0-9] + \\。?[0-9] * $ 'は有効な数字ではない123を受け取ります。また、小数点以下の数字が必要です。 '.8'は無効です。 '^ \ d *(\。\ d +)を使って解決しますか?$' – Tushar

+0

@Tushar私はそれを実現しました。 – Sweeper

+0

これを試してみてください。私は明確なアイデアを得ることができます。 –

2

だから何を達成しようとしていることは、連続的に小数点を入力しないように、人々を停止されていませんが、入力する数値をユーザーに強制します。私はそれが

フィドルを実行
$("input").on("input", function() { //on user input 
    const value = $(this).val(); 
    if (isNaN(value)) { // check if this is a number. '1.0' is a number. '1.0.a' is not' 
    $(this).css('color', 'red'); 
    } else { 
    $(this).css('color', 'black'); 
    } 
}) 

をどのように動作するかをお見せするために、小さなコードを作っていますJsfiddle

+0

何か?これは私が思ったよりも簡単です..私は素晴らしい技術の脳と女の子を見たことはありません..ありがとう@ treeNguyen ..どのようにREGEXで同じを達成した –

+0

あなたは正規表現の数をチェックすることを達成しようとしている? –

関連する問題