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