2011-02-06 37 views
2

我正在嘗試完成一些作業,看起來這本書可能錯了。我有一個簡單的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循環的代碼!謝謝您的幫助!

+0

請參閱[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

回答

1

此代碼有效。看 - http://jsbin.com/aqowa3

要查看代碼+ HTML,見 - http://jsbin.com/aqowa3/edit

確保你的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"; 
    } 
} 
1

我猜@JJBin的@ joe-hanink的回答對我來說似乎是正確的! 無論如何,我正在做iOS開發。我也需要信用卡驗證。 儘管在搜索正確的正則表達式爲我發現下面的鏈接:

Credit Card Validation RegEx

在那裏我發現下面的連接正則表達式,以及在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 
)$ 

它就像一個魅力!
希望這可能對你有幫助!
美好的一天!

相關問題