私は現在、入力テキストボックスのキー入力時に発生するイベントを持っています。私は現在、ほとんどの部分で働いている英数字に入力を制限するいくつかの正規表現を持っています。しかし、私は、正規表現はまだ以下の文字を許可することがわかった。英数字以外の文字を許可する正規表現
私は、これらの文字のcharCodesためfalseを返すことができますが、私は正規表現は、文字を有効または何の仕事をして、このシナリオでは正規表現を使用する点であるべきであると感じています。
誰も私がこれを訂正する方法を知っていますので、英数字以外の文字は検証に失敗します。
EDIT:追加コードスニペット
$('#nationalIdNumber').keypress(function(e) {
var regex = new RegExp("^[a-zA-Z0-9]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str) || e.keyCode === 8 || e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 46) {
return true;
}
e.preventDefault();
return false;
});
<script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script>
<input id="nationalIdNumber" type="text" />
文字クラスで 'a-Z'を使用していますか?与えられた正規表現は正常に動作するはずです。 – Tushar
私はここでRegexをhttps://regex101.com/にチェックしましたが、%記号を使用できません –
質問を編集してバグを表示します。私はそれを試して、実際には正規表現で '% 'を許可します。私はそれがこれらを可能にする '数値の' keyCode'ので5'& '%が'同じであると 'fromCharCode'は%'キーを押して 'は' 5'を与えるだろう、これはJS自体@Tushar @KhanjanBhatt –