Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用test()使用regexp进行信用卡验证_Javascript - Fatal编程技术网

Javascript 使用test()使用regexp进行信用卡验证

Javascript 使用test()使用regexp进行信用卡验证,javascript,Javascript,我正在努力完成一些家庭作业,看来这本书可能弄错了。我有一个简单的html页面,允许用户在我们的美国运通中选择信用卡。然后,用户输入一个数字并基于正则表达式计算该数字。我的问题是当test()计算它返回的布尔值或字符串时?然后我应该比较那个字符串还是布尔值?True==True应该触发嵌套if语句中的代码。以下是书中给出的有效代码: if(document.forms[0].cardName.value == "American Express") { var cardProtocol =

我正在努力完成一些家庭作业,看来这本书可能弄错了。我有一个简单的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中不起作用。我尝试用两个警报来修改它,以确保数字正确,布尔值正确……但仍然没有运气:

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
(请参阅),在我调整你的代码格式(希望你不介意)之前,
{
位于同一行,即注释的一部分。如果不是复制粘贴错误,至少最后一行可能会导致代码无法运行。