2011-02-06 105 views
2

我正在尝试完成一些作业,看起来这本书可能错了。我有一个简单的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循环的代码!谢谢您的帮助!

+0

请参阅[MDC:使用正则表达式](https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions#Working_with_Regular_Expressions)另请考虑使用适当的[信用卡验证检查数字例程](http ://www.beachnet.com/~hstiles/cardtype.html)(得到这个工作之后:-)使这段代码更容易阅读的一件简单的事情就是`var form = document.forms [0]; ... if(form.cardName ==“..”){... form.ccResult.value =“...”...} - 开心编码。请记住使用控制台/调试器/ jsbin来“测试”一点逻辑。 – 2011-02-06 07:17:29

回答

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

我猜@JJBin的@ joe-hanink的回答对我来说似乎是正确的! 无论如何,我正在做iOS开发。我也需要信用卡验证。 尽管在搜索正确的正则表达式为我发现下面的链接:

Credit Card Validation 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 
)$ 

它就像一个魅力!
希望这可能对你有帮助!
美好的一天!