25. september 2007 - 17:48Der er
21 kommentarer og 1 løsning
Reg.exp: Valider brugernavn
Hej eksperter.
Regular expressions.. tja, jeg fatter dem ikke - men har luret lidt på et tutorial... min reg.exp erfaring er cut'n'paste, og så ellers prøve mig frem (medmindre jeg tyr til eksperten ;))
Hvis jeg vil have valideret et brugernavn på den mest optimale måde, hvordan skal reg.exp så se ud?
Jeg har pt fået prøvet mig frem til det her:
\b[+a-zA-ZæøåÆØÅ0-9+]{3,15}\b
og den virker som sådan fint nok.. - men er det, det mest optimale? kunne det gøres nemmere eller smartere?
PS: links til tutorials, guider og referencer er værdsat ! :)
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
Hvis jeg så prøver at skrive nogle regler for hvordan mit brugernavn må være:
1.Skal indeholde tal eller bogstaver 2.Minimum 3 karakterer og maksimum 15(jeg ved ikke helt hvad man normalt sætter det til) 3.Må ikke indeholde mellemrum 4.Må ikke indeholde specielle tegn 5.Danske karakterer må bruges
Er det ikke en meget normal beskrivelse af et brugernavn ?
Spørgsmål: - hvorfor tillader den + tegnet? det forstår jeg ikke helt. Skal + tegnet ikke escapes før det betragtes som en karakter?
Hvorfor smider i ^ og $ på ? gælder ^ ikke kun for den første karakter der bliver matchet ? f.eks. i fjappe tæller ^ for f og $ for e ? eller har jeg fuldstændig misforstået der ? ;D
^ betyder 'start af input-streng' - og $ betyder 'slut på input-streng'. Når du omkranser mønstret med de to, kan der ikke være andet i strengen end det, der står i mønstret, for at opfylde et match.
/^[a-zæøå0-9]{3,15}$/i
- kan ikke matche "&% OleBole %%&///#¤!"
- det kan:
/[a-zæøå0-9]{3,15}/i
Den sidste tjekker bare, om strengen indeholder 3-15 tegn i træk, der opfylder kravene ... plus måske noget mere før og/eller efter ;o)
Der var da lidt forklaring på hvordan det hænger sammen :D
Dog forstår jeg ikke hvorfor "&% OleBole %%&///#¤!" vil give et match, da det jo ikke er tilladte tegn i min reg.exp ? Det er så fordi at der alligevel er et match inde i strengen?
- tjekker, om der et eller andet sted i strengen står 3-15 bogstaver og/eller tal efter hinanden. Den accepterer også, der står andet - både før og efter. Derfor vil strengen: "&% OleBole %%&///#¤!"
- matche. Delstrengen "OleBole" opfylder '3-15 bogstaver og/eller tal efter hinanden'. Det er nok.
Dette udtryk: /^[a-zæøå0-9]{3,15}$/i
- tjekker, at der ikke står andet i strengen end 3-15 bogstaver og/eller tal efter hinanden. Her vil strengen ikke matche, da der står noget andet før og efter delstrengen "OleBole".
Det er dét, de to tegn ^ og $ i enderne af mønstret gør ;o)
Om det er bedre, vil jeg lade være op til jer at vurdere... :^)
Men jeg ville sige at ^ matcher strengens start (ikke det første tegn, men sleve starten) og at $ matcher strenges slutning. Tilsammen kaldes ^ og $ for "ankre".
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.