2016-01-08 49 views
-1

在JSFiddle中運行此代碼會導致「l」出現「無問題」,但「m」出現「問題」,即使兩個變量看起來都是相同的格式。 https://jsfiddle.net/zj8mg518/26/任何人都可以解釋爲什麼在這種情況下JS正則表達式失敗?

var errString; 
    var l = "JLF5J-383Z3-QQKWR-JEN3T-39NUT-3"; 
    var m = "12345-12345-12345-12345-A"; 

    function Check_License_Key_Format(license) { 
     var regexLicense = new RegExp("^([A-za-z0-9]{5}[-]){5}[A-Za-z0-9]$"); 
     return regexLicense.test(license); 
    } 

    if (Check_License_Key_Format(l) == false) 
     errString = "problem"; 
    else 
     errString = "no problem";    
    alert(errString); 

     if (Check_License_Key_Format(m) == false) 
     errString = "problem"; 
    else 
     errString = "no problem"; 
    alert(errString); 
+1

請注意,在您的正則表達式中的[ - ]'是寫'-'的一個很長的路要走。 –

+1

另請注意,「A-Z」與「A-Z」不同,你的正則表達式的第一部分是不正確的。 –

回答

2

讓我們看了你的正則表達式,好嗎?

「五組(五個字母/數字後跟一個連字符),後跟一個字母/數字」

我只算在m變量4組。所以它失敗了。


另外,你有A-z而非A-Z起點附近。它應該是A-Z

+0

非常好,簡潔明瞭! –

+0

謝謝大家。我盯着這個很長時間....需要另一雙眼睛。 – Gio

相關問題