Javascript 使用test()使用regexp进行信用卡验证
我正在努力完成一些家庭作业,看来这本书可能弄错了。我有一个简单的html页面,允许用户在我们的美国运通中选择信用卡。然后,用户输入一个数字并基于正则表达式计算该数字。我的问题是当test()计算它返回的布尔值或字符串时?然后我应该比较那个字符串还是布尔值?True==True应该触发嵌套if语句中的代码。以下是书中给出的有效代码:Javascript 使用test()使用regexp进行信用卡验证,javascript,Javascript,我正在努力完成一些家庭作业,看来这本书可能弄错了。我有一个简单的html页面,允许用户在我们的美国运通中选择信用卡。然后,用户输入一个数字并基于正则表达式计算该数字。我的问题是当test()计算它返回的布尔值或字符串时?然后我应该比较那个字符串还是布尔值?True==True应该触发嵌套if语句中的代码。以下是书中给出的有效代码: if(document.forms[0].cardName.value == "American Express") { var cardProtocol =
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中不起作用。我尝试用两个警报来修改它,以确保数字正确,布尔值正确……但仍然没有运气:
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(document.forms[0].cardName.value==“美国运通”)
{
var cardProtocol=new RegExp(“^3[47][0-9]{13}$”;//此处的REGEX条目此代码有效。请参阅-
要查看代码+html,请参阅-
确保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";
}
}
if(document.forms[0].cardName.value==“美国运通”)
{
var cardProtocol=new RegExp(“^3[47][0-9]{13}$”;//这里的REGEX条目我想@joe hanink在JSBin中的答案对我来说似乎是正确的!
不管怎样,我正在做iOS开发。我也需要信用卡验证。
在搜索正确的正则表达式时,我找到了以下链接:
在那里,我找到了以下连接的正则表达式,并在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
)$
它就像一个符咒!希望这对你们大家都有帮助!
好的一天!也可以考虑使用适当的(在得到这个工作之后:-)一个简单的事情使这个代码更容易阅读的是<代码> var窗体=文档。窗体[0 ];……如果……(表格CARDATION= =…..){{……CcReult.Value=……}} /代码> -快乐编码。记住使用控制台/调试器/JSBN来“测试”。一点逻辑。你的if(…test())
行有三件奇怪的事情:你不需要函数调用的参数,你永远不需要显式地测试true
(请参阅),在我调整你的代码格式(希望你不介意)之前,{
位于同一行,即注释的一部分。如果不是复制粘贴错误,至少最后一行可能会导致代码无法运行。