我想在输入(密钥向上)上添加掩码以检查用户的信用卡号。我创建了这个脚本,但它不能很好地工作。
function card_checker(cardinput) {
var cardno_american = /^(?:3[47][0-9]{13})$/;
var cardno_visa = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
var cardno_master = /^(?:5[1-5][0-9]{14})$/;
var cardno_discover = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;
var cardno_dinner = /^(?:3(?:0[0-5]|[68][0-9])[0-9]{11})$/;
var cardno_jcb = /^(?:(?:2131|1800|35\d{3})\d{11})$/;
if (cardinput.match(cardno_visa)) {
return 1;
} else if (cardinput.match(cardno_master)) {
return 1;
} else if (cardinput.match(cardno_discover)) {
return 2;
} else if (cardinput.match(cardno_american)) {
return 3;
} else if (cardinput.match(cardno_jcb)) {
return 6;
} else {
return 0;
}
}
var oldVal;
$('#card_number').on('keypress paste textInput input', function() {
var res = card_checker($('#card_number').val());
var val = this.value;
console.log(res);
if ((val != oldVal) && (val.length == 1) && res == 3) {
$(this).mask('9999-9999-9999-999', {
"translation": {
"#": null
}
});
} else {
$(this).mask('9999-9999-9999-9999', {
"translation": {
"#": null
}
});
}
oldVal = val;
$(this).val(oldVal);
});
这不适用于美国运通卡。
答案 0 :(得分:0)
美国运通卡号码(无连字符)
/^(?:3[47][0-9]{13})$/ // matches the first 2 digit which starts with either 37 or 34 and rest 13 digits
(连字符:xxxx-xxxxxx-xxxxx)
/^3[47]\d\d([\ \-]?)\d{6}\1\d{5}$/