0

我正在尝试编写一个循环来检查卡号是否具有正确的格式,但我无法让它工作并且调试不起作用。

我需要检查格式: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 示例

多谢你们

4

2 回答 2

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
于 2013-10-30T06:12:25.440 回答
0

鉴于您有:

> var fourthp = pieces[2].slice(-1);

那么几乎可以保证它是一个字符串,所以什么时候

> (fourthp.length == 1 && typeof fourthp == "number")

永远是真的吗?即使它是一个数字,那么Fourthp.length将是undefined,因此无论哪种方式它都将始终为假。

于 2013-10-30T06:17:30.273 回答