webForumDet fria alternativet

validera med minst 2 siffror

11 svar · 673 visningar · startad av HeHo

HeHoMedlem sedan apr. 2000277 inlägg
#1

Jag vill validera ett lösenordsfält som skall innehålla minst 8 tecken varav 2 tecken måste vara siffror. Hur gör man det smidigast?

dectgapMedlem sedan sep. 20021 655 inlägg
#2
<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>
Jesper TMedlem sedan nov. 20017 144 inlägg
#3

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 då eller?

Jesper TMedlem sedan nov. 20017 144 inlägg
#4
\d{1,}|\D{1,}

?

dectgapMedlem sedan sep. 20021 655 inlägg
#5

Jesper T skrev:

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 :)

Jesper TMedlem sedan nov. 20017 144 inlägg
#6

Ok, vad bra.
Detta verkar också funka.

<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>

Släpper då även igenom åäö.

dectgapMedlem sedan sep. 20021 655 inlägg
#7

Jesper T skrev:

Ok, vad bra.
Detta verkar också funka.

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.

Jesper TMedlem sedan nov. 20017 144 inlägg
#8

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?

dectgapMedlem sedan sep. 20021 655 inlägg
#9

Ja, du har fel :)

/\d{1,}|\D{1,}/

blir i klartext:
"ett tecken (0-9) minst en gång ELLER ett tecken (annat än 0-9) minst en gång"

Testa själv att plocka bort siffrorna från ditt lösenord så ska du se att det går igenom.

Jesper TMedlem sedan nov. 20017 144 inlägg
#10

Har du testat?
Nej det funkar bra för mig så jag fattar inte vilket fel som är trasigt nu.

abc12tre : går igenom
abctre : går inte igenom
12 : går inte igenom
1 som måste ha r1 : går igenom
dectgapMedlem sedan sep. 20021 655 inlägg
#11

Sorry, det var jag som tänkte fel.
Jag testade tidigare, men läste inte meddelandet som kom upp vidare noga.

Jag ska nog dricka ett glas vatten till - jag sa ju att det var varmt! :)

Jesper TMedlem sedan nov. 20017 144 inlägg
#12

Det är lungt. Jag har också värmeslag. :x Vatten :P

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)