如果有一个用于输入序列号的输入字段:
<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");
}
});
}());
好的,这个功能正在运行。接受以下格式的所有序列号:
- 前三位数字:从 100 到 999 的所有数字
- 接下来的 4 位数字:一年:1000-2999
- 接下来的 2 位数字:一个月:01 - 12
- 最后 5 位数字:从 00000 到 99999 的所有数字
例如:25020130612345
如果有四个问题,扩展这个脚本。
- 正则表达式好吗?只有我提到的数字被接受吗?
- 前三位仅为特殊数字(如250、273、278、312、415),只有这些特殊数字才有效,其他数字使序列号无效。是否可以对这些数字使用数组并将其传递给检查输入序列的函数?
- 最后五位数字应该从 0000* 1 * 而不是 00000 开始,我该如何更改我的正则表达式才能做到这一点?
- 用第二个正则表达式值和另一个字段扩展这个函数会很棒。目前我有 2 次发布的 jquery 函数和另一个带有正则表达式的 var。如何扩展函数以使用超过 1 个输入字段和超过 1 个正则表达式?
我做了一个小提琴来看看我的例子工作: