<script type="text/javascript">
var str = "abc12tre";
var m = str.match(/\d/g);
if(m.length >= 2)
alert("Jepp, lösenordet innehåller minst två siffror.");
</script>
Skulle behöva något liknande för att kolla att lösenordet innehåller både siffror och bokstäver.
Skall man lägga till (^/d) då eller?
Vilka tecken ska vara tillåtna - bara bokstäver (a-z, A-Z) och siffror (0-9)?
I så fall kan du skriva:
<script type="text/javascript">
var str = "abcd1234";
if(/\d/.test(str) && /[a-z]/i.test(str) && /^[\da-z]{8,}/i.test(str))
alert("Lösenordet innehåller minst en siffra, minst en bokstav och är minst 8 tecken långt");
</script>
Först kollar en regexp om det finns några siffror med i lösenordet, sen kollas det om det finns någon bokstav med i lösenordet och sist kollas det att lösenordet endast innehåller siffror och bokstäver, och dessutom att det är minst åtta tecken långt.
Det kan förmodligen skrivas på något smidigare sätt, men jag skyller på värmen - och blomsterflugorna :)
<script type="text/javascript">
var str = "abc12tre";
var m = str.match(/\d{1,}|\D{1,}/g);
if(m.length >= 2){
alert("Jepp, lösenordet innehåller både siffror och bokstäver.");
}else{
alert("Lösenordet måste innehålla både siffror och bokstäver!.");
}
</script>
Fast det där blir fel.
Du kontrollerar, genom regexpen, bara att lösenordet innehåller minst en siffra ELLER minst ett tecken annat än en siffra, d.v.s. du kollar egentligen bara att lösenordet innehåller minst ett tecken (oavsett vilket).
Sedan kontrollerar du att lösenordet är minst två tecken långt, så vilket lösenord som helst, oavsett tecken, som är minst två tecken långt går igenom.
Nja, ja, första grupperingen kollar att det finns minst en siffra och den andra grupperingen kollar att det finns minst en "ickesiffra".
Och är m.length större än 2 så är det ok, annars inte.
Eller har jag fel?