cascaMedlem sedan feb. 20005 891 inlägg Försöker skapa en funktion som ska testa styrkan på olika lösenord, och tänkte testa dom mot några olika regular expressions men körde fast redan på första... ;)
Detta är alltså förenklad kod för att felsöka:
<script language="javascript">
var password = document.getElementById("password").value;
// Skapa ett regexp som kollar om värdet är siffror och inget annat:
var justnumbers = new RegExp("^\d*$");
// Outputta i en alertbox:
alert(justnumbers.test(password));
</script>
Bör inte värdet som returneras av funktionen justnumbers.test() vara "false" om jag matar in t.ex "123abc" men "true" om jag matar in säg, "123" eller annat värde med bara siffror? Har inte pysslat sådär jättemycket med JavaScript, men när jag testar regexp-uttrycket i t.ex RegExr så funkar det iaf, så det känns som om det inte är där skon klämmer... ;)
Det som händer nu är att jag får upp "false" oavsett om jag matar in "123" eller "123abc" i formulärfältet.
Peter SMedlem sedan dec. 20025 483 inlägg Backslash i en sträng eskäjpar kommande tecken. I det här fallet vill du inte göra det utan snarare "^\\d*$".
Jag skulle dock göra så här:
var justnumbers = /^\d*$/;
cascaMedlem sedan feb. 20005 891 inlägg Ah men fan, var det så enkelt. :D
Thank ye, thank ye very much!
Felet ligger i den sömska tolkningen av strängar. För att peta in ett \ i strängen måste du ange \\. Vill till vers leta efter backslash tecken måste du skriva \\\\ som skickas som \\ till regexp-motorn och till sist tolkas som ett escapeat \.
Ett bättre sätt att ange reguljära uttryck i JS är med slashnotation, då slipper du oroa dig för den första typen av escapening.
alert(/^\d*$/.test(password));
// Eller givetvis så här om du känner för det:
// Skapa ett regexp som kollar om värdet är siffror och inget annat:
var justnumbers = /^\d*$/;
// Outputta i en alertbox:
alert(justnumbers.test(password));
Hoppsan, för långsam...
dAEkMedlem sedan feb. 20041 816 inlägg Onödigt vetande:
Slashnotationen är mycket snabbare också. Nuförtiden spelar det kanske mindre roll men förr
kunde man märka skillnad om man t.ex. loopade igenom en lite längre array som man skapade regexps i.