シリアル番号の入力に使用する入力フィールドが 1 つある場合:
<div id="sn-check">
<input type="text" value="" name="sn" id="sn" size="30" maxlength="14">
</div>
私のjQuery関数は次のようになります。
(function(){
var snRegexp = /^[1-9][0-9][0-9][1-2][0-9][0-9][0-9]([0][1-9]|[1][0-2])[0-9]{5}$/;
$("#sn").on("keyup", function() {
var text = $(this).val();
var len = text.length;
if(len == 14){
var isMatch = snRegexp.test(text);
if(isMatch){
$("#sn-check").addClass("fine");
$("#sn-check").removeClass("error")
}else{
$("#sn-check").addClass("error");
$("#sn-check").removeClass("fine");
}
}else{
$("#sn-check").removeClass("error");
$("#sn-check").removeClass("fine");
}
});
}());
さて、この機能は働いています。次の形式のすべてのシリアル番号が受け入れられます。
- 最初の 3 桁: 100 から 999 までのすべての数字
- 次の 4 桁: 年: 1000-2999
- 次の 2 桁: 月: 01 - 12
- 下 5 桁: 00000 から 99999 までのすべての数字
例: 25020130612345
4 つの質問がある場合は、このスクリプトを拡張します。
- 正規表現は大丈夫ですか?私が言及した数字だけが受け入れられますか?
- 最初の 3 桁は特別な番号 (例: 250、273、278、312、415) のみです。これらの特別な番号のみが有効であり、それ以外はシリアル番号を無効にします。この数字に配列を使用して、入力されたシリアルをチェックする関数に渡すことは可能ですか?
- 最後の 5 桁は 00000 ではなく 0000* 1 * で始まる必要があります。正規表現を変更するにはどうすればよいですか?
- この関数を 2 番目の正規表現値と別のフィールドで拡張するとよいでしょう。現時点では、投稿されたjquery関数が2回あり、正規表現を含む別のvarがあります。複数の入力フィールドと複数の正規表現で機能するように関数を拡張するにはどうすればよいですか?
私の例が機能するのを見るためにフィドルを作りました: