私はいくつかの宿題を完了しようとしていますが、その本が間違っている可能性があります。私は単純なhtmlページを持っているので、ユーザーはアメリカンエクスプレスのクレジットカードを選ぶことができます。その後、ユーザーは数字を入力し、正規表現に基づいて数字を評価します。私の質問は、test()がブール値または文字列を返す数値を評価するときに終わるのですか?私はその文字列かブール値を比較する必要がありますか? True == trueは、ネストされたif文のコードを起動します。本が私に有効なコードとして与えるものをHeres:test()を使用した正規表現によるクレジットカード確認
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ループが原因ですが、なぜ動作していないのか分かりません。 ifループのコードを投げてください!助けてくれてありがとう!
[MDC:正規表現の使用](https://developer.mozilla.org/ja/JavaScript/Guide/Regular_Expressions#Working_with_Regular_Expressions)を参照してください。また、適切な[クレジットカード確認チェックデジットルーチン](http ://www.beachnet.com/~hstiles/cardtype.html)このコードを読みやすくするための簡単な方法の1つは 'var form = document.forms [0];です。 ... if(form.cardName == ".."){... form.ccResult.value = "..." ...} ' - ハッピーコーディング。ちょっとしたロジックを "テスト"するには、コンソール/デバッガ/ jsbinを利用することを忘れないでください。 –
あなたの 'if(... test())'行には3つの奇妙なことがあります:関数呼び出しの周りに括弧は必要なく、 'true'に対して明示的にテストする必要はありません([Joe's answer] /stackoverflow.com/questions/4912094/credit-card-validation-with-regexp-using-test/4912134#4912134))、あなたのコードフォーマットを変更する前に(あなたが気にしないことを願って) '{'は同じ行、すなわちコメントの一部にその最後のコードは、少なくともコピー&ペーストエラーではない場合、コードが機能しなくなる可能性があります。 –