Toon posts:

[JS] Regexp voor het vinden van een herhaald karakter

Pagina: 1
Acties:

Verwijderd

Topicstarter
De topictitel is een beetje krom, maar ik moet dus een regular expression in elkaar zetten waarmee ik kan kijken of een bepaald teken (letter of cijfer) bijvoorbeeld drie of meer keer voorkomt. Het is voor een wachtwoord-strength ding en wanneer iemand dus aaaaaAAAA invult moet dat herkend worden als "heel veel keer dezelfde letter" (en dus niet erg goed als wachtwoord) terwijl abcdefJDJEJD dus wel als redelijk veilig gezien wordt, aangezien het mixed-cased is en bestaat uit verschillende letters.

Dat laatste werkt door gewoon te kijken of er kleine letters en hoofdletters in voorkomen; iedere occurence van een teken uit een bepaalde groep (a-z, A-Z, 0-9 en \W) levert een punt op. Herhalingen van hetzelfde teken moeten de score verlagen.

Heeft iemand een idee hoe dit gedaan kan worden met een regular expression in JavaScript? :)

edit:

Nevermind, genoeg experimenteren heeft het opgelost: (.)\1{2,}


Maar nu dit topic toch nog open is: is er een makkelijk regexp manier om een patroon te herkennen in een string? Als iemand bijvoorbeeld abc123abc123 gebruikt, dat dan die eerste zes herkend worden in die laatste zes.

[ Voor 17% gewijzigd door Verwijderd op 07-10-2005 12:16 ]


Verwijderd

(.+)\1{2,} :)

Verwijderd

Topicstarter
Dan moet het patroon drie keer achter elkaar voorkomen. Ik heb er even mee zitten rommelen en kwam hieruit:

(..+)\1{1,}

Maar bedankt voor de moeite; ik had het ook zelf moeten weten achteraf gezien. :)

Verwijderd

In feite is {1,} natuurlijk altijd overbodig, en kun je het ook herschrijven naar:

(.+)\1+

Maar je hebt gelijk, ik had even te eenvoudig jouw voorbeeld overgenomen, die 3 gelijke tekens of meer matcht.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

de vraag is: hoe ver wil je gaan met het ontdekken van patronen, want ook hier zitten patronen in:

abcdefg
gfedcba
abcdedcba
abacadae

;)

overigens matched (.+)\1+ al op het voorkomen van 2x hetzelfde karakter achter elkaar.

[ Voor 24% gewijzigd door crisp op 07-10-2005 18:11 ]

Intentionally left blank