使用test()使用正则表达式进行信用卡验证

时间:2011-02-06 06:59:36

标签: javascript

我正在尝试完成一些功课,看来这本书可能会弄错。我有一个简单的html页面,允许用户在我们的案例美国快递中选择一张信用卡。然后,用户输入一个数字,并根据正则表达式评估该数字。我的问题最终是当test()评估它返回布尔值或字符串的数字时?我应该比较那个字符串或布尔值? True == true应该在嵌套的if语句中触发代码。这本书给我的是有效的代码:

if(document.forms[0].cardName.value == "American Express")
{
    var cardProtocol = new RegExp("^3[47][0-9]{13}$"); //REGEX ENTRY HERE
    if(cardProtocol.test(document.forms[0].cardNumber.value))     
        document.forms[0].ccResult.value = "Valid credit card number";
}

上面的代码在firefox中不起作用。我尝试用2个警告来修改它,以确保数字是好的,布尔值很好......但仍然没有运气:

if(document.forms[0].cardName.value == "American Express")
{
    var cardProtocol = new RegExp("^3[47][0-9]{13}$"); //REGEX ENTRY HERE <------
    alert(document.forms[0].cardNumber.value)
    alert(cardProtocol.test(document.forms[0].cardNumber.value))
    if((cardProtocol.test(document.forms[0].cardNumber.value)) == true ) // <--Problem
    {
        document.forms[0].ccResult.value = "Valid credit card number";
    }
    else
    {
        document.forms[0].ccResult.value = "Invalid credit card number";
    }
}

有什么想法吗? if循环是罪魁祸首,但我不知道为什么它不起作用。请抛出if循环的代码!谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

此代码有效。见 - http://jsbin.com/aqowa3

要查看代码+ html,请参阅 - http://jsbin.com/aqowa3/edit

确保你的html与你的js一致,并确保你在dom准备就绪后调用你的函数。

if(document.forms[0].cardName.value == "American Express")
{
    var cardProtocol = new RegExp("^3[47][0-9]{13}$"); //REGEX ENTRY HERE <------
    if(cardProtocol.test(document.forms[0].cardNumber.value)) {
       document.forms[0].ccResult.value = "Valid credit card number";
    } else{
       document.forms[0].ccResult.value = "Invalid credit card number";
    }
} 

答案 1 :(得分:1)

我猜@ joe-hanink在JSBin中的回答对我来说似乎是对的! 无论如何,我正在进行iOS开发。我也需要信用卡验证。 在搜索正确的regEx时,我找到了以下链接:

Credit Card Validation RegEx

在那里我找到了以下连接的RegEx,并在iOS中成功使用了它,Objective-C方法:

^(?:4[0-9]{12}(?:[0-9]{3})?          # Visa
 |  5[1-5][0-9]{14}                  # MasterCard
 |  3[47][0-9]{13}                   # American Express
 |  3(?:0[0-5]|[68][0-9])[0-9]{11}   # Diners Club
 |  6(?:011|5[0-9]{2})[0-9]{12}      # Discover
 |  (?:2131|1800|35\d{3})\d{11}      # JCB
)$

它就像一个魅力!希望这对你们所有人都有帮助!
美好的一天!