2016-04-29 6 views
0

Ich habe eine Regex-Ausdruck, der das Ablaufdatum auf der Kreditkarte entspricht Format, das ich suche, ist mm/yy. Folgendes ist meine Funktion in JavascriptRegex-Ausdruck funktioniert nicht zur Validierung Kreditkartenablauf Informationen

validateCreditCardExpiry: function(expiry){ 
     if(this.isEmpty(expiry)) 
     { 
      return false; 
     } 
     var regex = /^(0[1-9]|1[0-2])\/?([0-9]{2})$/; 
     if(!regex.test(expiry)) 
     { 
      return false 
     } 
     return true 
    } 

Ich habe versucht, mit der oben genannten auf Zeichenfolge wie 12/33, die falsche zurückgibt. Kann mir jemand helfen? Dank

+1

Ihr Muster funktioniert: https://regex101.com/r/rK7aO8/1 Der Fehler muss woanders sein. – Jan

+0

Es scheint in Ordnung für mich. Möglicherweise haben Sie ein nicht druckbares Zeichen in der Zeichenfolge. – Toto

+0

es scheint, dass es in der if (! Regex.test (Ablauf)) und damit false – chan

Antwort

0

Die Der obige Regex-Ausdruck funktioniert ordnungsgemäß. Irgendwie habe ich Leerzeichen zwischen '/' eingefügt. das war das Problem

1

Neben meinem Kommentar (see your working regex here), können Sie sehr gut Ihre Funktion verkürzen:

validateCreditCardExpiry: function(expiry){ 
    if (expiry) { 
     var regex = /^(0[1-9]|1[0-2])\/?([0-9]{2})$/; 
     if(regex.test(expiry)) return true; 
    } 
    return false; 
} 

Oder - wie @anubhava in den Kommentaren darauf hingewiesen, noch kürzer:

validateCreditCardExpiry: function(expiry){ 
    return /^(0[1-9]|1[0-2])\/?[0-9]{2}$/.test(expiry); 
} 
+1

Oder einfach 'validateCreditCardExpiry: Funktion (Ablauf) {return /^(0[1-9]|1[0-2])\/?[0-9]{2}$/.test(expiry); } ' – anubhava

+1

@anubhava: Die Antwort aktualisiert, danke. – Jan

+0

Danke für das Update +1 – anubhava

Verwandte Themen