2017-07-26 3 views
1

Ich bin an einem Projekt arbeiten, das ein Eingabefeld des Benutzers erfordern nur eine der folgenden drei Optionen eingeben muss:Javascript Formvalidierung | legen Sie eine bestimmte Eingabeformat

mit einem Buchstaben
  1. Zahl wie 150
  2. Nummer beginnend (die muss N nicht zwischen Groß- und Klein) wie N150,
  3. Nummer mit einem Buchstaben endet (die N sein muss, 150N wie Groß- und Kleinschreibung)

Alle anderen Werte wie:

  • 150x kehrt Fehlermeldung wrong input
  • x150 wrong input
  • 1N50 kehren zurück wrong position

Antwort

0

Den richtigen Weg, dies zu tun, ist eine Reihe von gültigen Zahlen zu machen und dann zu prüfen, wenn der angegebene Text in Ihrem Array vorhanden ist.
Zum Beispiel:

var validNumbers = [ 150, N150, 150N ]; 
if (validNumbers.indexOf(parseInt(num, 10)) >=0) { 
    //Match 
} 

Sie erhalten eine indexOf Funktion für IE benötigen:

if (!Array.prototype.indexOf) { 
Array.prototype.indexOf = function(needle) { 
    for(var i = 0; i < this.length; i++) { 
     if(this[i] === needle) { 
      return i; 
     } 
    } 
    return -1; 
}; 
} 
+0

Die 150, 150N und N150 ist nur ein Beispiel , Benutzer kann verschiedene Zahl wie 2000, 1657N, N8 usw. –

+0

so einlegen, dass Sie redigieren können, um mit zu entsprechen, was Sie wünschen! Ich habe dir nur eine mögliche Lösung gegeben! –

+0

Rigth, Zahlen von (001 - 999) (N001 - N999) (001N-999N), nur ein 3000-Werte-Array: /. und übrigens, * N130 * ist nicht # korrekt # ... –

0

Check diese Antwort:

Regular expression to match a number range in JavaScript

und an Ihre Bedürfnisse anpassen, können Sie fügen Sie einfach das "N" am Ende oder am Anfang hinzu, indem Sie einen Regex-Teil hinzufügen, um Werte wie:zu akzeptieren-N150 -150N -130N -N130

+0

Keine Antworten * in einem anderen Schloss * (nur Link) sind keine Antworten ... –

0

Ein nicht regexapproach (nur um zu zeigen, warum regex nützlich ist):

function test(value){ 
//convert to array 
value=value.split(""); 
//check the number 
function isnumber(num){ 
    return num.every(n=>"1234567890".includes(n)); 
} 

//weve got three possibilities: 
    //150 
    if(isnumber(value)) return true; 

    //N150 
    var [n,...rest]=value; 
    if(n==="N" && isnumber(rest)) return true; 

    //150N 
    var n=value.pop(); 
    return n==="N" && isnumber(value); 
} 

http://jsbin.com/kafivecedi/edit?console

Verwandte Themen