我正在尝试编写一个循环来检查卡号是否具有正确的格式但我无法使其工作且调试无效。
我需要检查格式:XXX-XXX-XXX1
这是我的javascript:
if(pieces[2] == ''){
$('#hcc_validated').value = 'incorrect';
showCardError();
$('#fname').value = '3';
}else if((pieces[0].length == 3 && typeof pieces[0] == "string") && (pieces[1].length == 3 && typeof pieces[1] == "string") && (thirdp.length == 3 && typeof thirdp == "string") && (fourthp.length == 1 && typeof fourthp == "number")){
$('#hcc_validated').value = 'validated';
showCardError();
$('#fname').value = '2';
}else{
$('#hcc_validated').value = 'not validated';
showCardError();
$('#fname').value = '1';
}
谁能看到我哪里出错了? (这只是代码的一部分,但我确信这是我出错的地方,因为其余的代码工作正常......
如果你想要完整的代码,这是我的JSFiddle: JSFIddle Example
谢谢你们
答案 0 :(得分:2)
使用正则表达式可以更好地解决这个问题。
具体而言;
[0-9]{3}-[0-9]{3}-[0-9]{3}1
使用Javascript:
var inputstring = "123-123-1231";
var pattern = new RegExp("[0-9]{3}-[0-9]{3}-[0-9]{3}1");
var result = pattern.test(inputstring);
// now result contains true or false
答案 1 :(得分:0)
鉴于你有:
> var fourthp = pieces[2].slice(-1);
那么它几乎可以保证它是一个字符串,所以什么时候会
> (fourthp.length == 1 && typeof fourthp == "number")
永远是真的吗?即使它是一个数字,那么 fourthp.length 将 undefined ,所以无论如何它总是假的。