gpt4 book ai didi

javascript - 在javascript中使用正则表达式进行信用卡输入验证

转载 作者:数据小太阳 更新时间:2023-10-29 04:05:02 26 4
gpt4 key购买 nike

我一直在努力完成这项工作,但没有成功。我正在使用正则表达式根据通过单选按钮选择的信用卡类型来验证用户输入的信用卡号。 但我一直对所有 if 语句发出警报。看起来所有的 if else 语句都经过了测试。

There is the HTML code fragment: 

<code>
<p><b>Payment Information:</b></p>
<fieldset>
<input type="radio" name="payment" value="Visa" id="visa" />Visa &nbsp;
<input type="radio" name="payment" value="Master Card" />Master Card &nbsp;
<input type="radio" name="payment" value="American Express" />American Express &nbsp;
<input type="radio" name="payment" value="Discover" />Discover <br /><br />
<label>Card Number:</label>
<input type="text" name="cardNumber" id="cardNum" size="30" value="" onblur="ValidateCreditCardNumber()" />
</code>



And there is my javascript function :

<code>

function ValidateCreditCardNumber(){

var ccNum = document.getElementById("cardNum").value;



var visaRegEx = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
var mastercardRegEx = /^(?:5[1-5][0-9]{14})$/;
var amexpRegEx = /^(?:3[47][0-9]{13})$/;
var discovRegEx = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;


if (visaRegEx.test(ccNum) === false ){ // Visa validation
alert("Please provide a valid Visa number!");
}
else
{
alert("Thank You!");
}

if (mastercardRegEx.test(ccNum) === false){ // MasterCard validation
alert("Please provide a valid MasterCard number!");
}
else
{
alert("Thank You!");
}

if(amexpRegEx.test(ccNum) === false){ // Amex validation
alert("Not a valid America Express number!");
}
else
{
alert("Thank You!");
}

if (discovRegEx.test(ccNum) === false){ // Discover validation
alert("Please provide a valid Discover number!");
}
else
{
alert("Thank You!");
}


}
</code>


Any kind of help or advice would be really appreciated.

最佳答案

您的案例中有 4 个不同的 if block ,当前一个 block 失败时,它会命中每个 block 。

if 替换为 if else,这样 if 只会验证单个用例。此外,您无需让用户知道他试图输入的卡的具体类型。只需一条消息来输入有效号码就足够了。

function ValidateCreditCardNumber() {

var ccNum = document.getElementById("cardNum").value;
var visaRegEx = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
var mastercardRegEx = /^(?:5[1-5][0-9]{14})$/;
var amexpRegEx = /^(?:3[47][0-9]{13})$/;
var discovRegEx = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;
var isValid = false;

if (visaRegEx.test(ccNum)) {
isValid = true;
} else if(mastercardRegEx.test(ccNum)) {
isValid = true;
} else if(amexpRegEx.test(ccNum)) {
isValid = true;
} else if(discovRegEx.test(ccNum)) {
isValid = true;
}

if(isValid) {
alert("Thank You!");
} else {
alert("Please provide a valid Visa number!");
}
}

关于javascript - 在javascript中使用正则表达式进行信用卡输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40775674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com