Zeichenfolge mit Arraywerten vergleichen

kesnw

Erfahrenes Mitglied
Hallo,

ich habe eine Zeichenfolge (z.B. Hallo12) und möchte überprüfen od diese Folge mindestens einen Großbuchstaben, mindestens einen Kleinbuchstaben und mindestens eine Zahl enthält. Dafür habe ich drei Array angelegt:

Code:
  var big = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
  small = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z");
  num = new Array(1,2,3,4,5,6,7,8,9,0);

Wie teste ich jetzt am geschicktesten ob die Anforderungen stimmen? Gibt es so etwas wie "isin"?

Meine Idee ist folgende:

Code:
    var teststring = "Hallo12";
    for (var i=0; i < teststring.length; i++)
    {
      if(teststring.substring(i,i+1) isin big)
      {
        alert("Ja");
      }
      else
      {
        alert("Nein");
      }
    }
 
Eine Idee wäre auch die Werte in ASCII umzuwandeln, also das Gegenteil von String.fromCharCode(). Ich finde dazu aber nichts...
 
Zuletzt bearbeitet:
...womit wir zu den allseits beliebten regulären Ausdrücken kommen. :)

Code:
<script type="text/javascript" language="JavaScript">
<!--

var eingabe = "Josef44";
var suche1 = /[A-Z]/;
var suche2 = /[a-z]/;
var suche3 = /\d/;
(suche1.test(eingabe) && suche2.test(eingabe) && suche3.test(eingabe)) ? alert("Alles ok.") : alert("Da stimmt was nicht.");

//-->
</script>

hth,
Adam
 
Zuletzt bearbeitet:
Jetzt noch ne unverschämte Frage:

Könnte mir jemand den Quellcode für folgendes Problem posten, hab zwar schon was programmiert, für obiges Problem aber schon mehr als 20 Zeilen gebraucht, was du in einer hast...

Passwortrichtlinie:

- mindestens 8 Zeichen
- mindestens ein Großbuchstabe
- mindestens ein Kleinbuchstabe
- mindestens eine Zahl
- keine Sonderzeichen
- keine 4 Zeichen nacheinander

Hoffe das ist nicht zu viel verlangt aber ich mach da jetzt schin den ganzen Tag rum...

Großes Dankeschön wenn sich dem einer annimmt!
 
Was meinst du mit "keine 4 Zeichen hintereinander"?
Und Sonderzeichen sind bei dir alles bis auf Groß-/Kleinbuchstabe/Zahl/Unterstrich?
 
Sorry, ich meine keine 4 gleichen Zeichen hintereinander.

Mit den Sonderzeichen hast du recht plus Bindestrich (-).

Wäre echt klasse wenn du mir weiterhilfts, ich bin gerade am Verzweifeln...
 
Tjo, gar nicht so einfach für mich.

Die ersten 4 Punkte sind kein Problem, allerdings bereitet mir der Bindestrich bei den Nicht-Sonderzeichen irgendwie Sorgen und auch die Sache mit den 4 gleichen Zeichen hintereinander bekomme ich derzeit nicht gelöst.
Bin auch schon längst nicht mehr der Fitteste, was die RegExps betrifft.

Vielleicht hat ja jemand anderes hier Ahnung davon...
 
Code:
function validate_pwd(strPwd)
{
    arrChars =new Array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'ä', 'ö', 'ü', 'ß', '_', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'Ä', 'Ö', 'Ü', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-');
    
    if(strPwd.length<8){alert('gib 8');return false;}
    if(res=strPwd.match(new RegExp('([^'+arrChars.join('')+'])'))){alert(res[1]+'\n...will ich nicht');return false;}
    if(!strPwd.match(/\d/)){alert('eine Zahl muss rein');return false;}
    if(strPwd==strPwd.toLowerCase()){alert('mindestens ein GROSSBUCHSTABE muss her');return false;}
    if(strPwd==strPwd.toUpperCase()){alert('mindestens ein kleinbuchstabe muss hinein');return false;}
    for(c=0;c<arrChars.length;++c)
        {
            if(res=strPwd.match(new RegExp('('+arrChars[ c]+arrChars[ c]+arrChars[ c]+arrChars[ c]+'+)')))
                {
                    alert(RegExp.$1+'\n\n mehr als 3 gleiche Zeichen hintereinander sind strengstens untersagt');return false;
                }
        }    
    return true;
}
 

Neue Beiträge

Zurück