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?
validera med minst 2 siffror
11 svar · 673 visningar · startad av HeHo
<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 då eller?
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 :)
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 åäö.
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.
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?
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.
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
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! :)
Det är lungt. Jag har också värmeslag. :x Vatten :P