Avatar billede sorenaakjaer Nybegynder
06. maj 2015 - 15:01 Der er 3 kommentarer

Hjælp til CPR Reg. Exp.

Hej,

Jeg har følgende regex til at identificerer CPR i en string. Den virker egentlig som jeg ønsker, men jeg har et problem som jeg simpelthen ikke kan løse.

Reg. Exp. finder desværre også match i tekst om ikke er cpr numre. F.eks finder den CPR "010284-2020" i teksten "Dette er ikke et CPR nummer 0000010284-20201313".

Jeg ønsker kun at den finde match når der er tale om et 10 eller 11 cifret string

Håber nogen kan hjælpe

Min RegEx;
(?:(?:31(?:0[13578]|1[02])|(?:30|29)(?:0[13-9]|1[0-2])|(?:0[1-9]|1[0-9]|2[0-8])(?:0[1-9]|1[0-2]))[0-9]{2}-?[0-9]|290200-?[4-9]|2902(?:(?!00)[02468][048]|[13579][26])-?[0-3])[0-9]{3}|000000
Avatar billede Slater Ekspert
06. maj 2015 - 16:15 #1
Som regel skal du bare starte med ^ og slutte med $ for at fortælle RegEx'en at den skal regne fra start til slut af strengen. Men du fortæller ikke hvilken dialekt af RegEx du bruger.
Avatar billede erikjacobsen Ekspert
06. maj 2015 - 20:45 #2
Du skal formentlig bare sætte \b før og efter. Læs her: http://www.regular-expressions.info/wordboundaries.html
Avatar billede Slater Ekspert
06. maj 2015 - 21:40 #3
Oh, det er på den måde - vi prøver at finde matches på CPR-numre i en streng, ikke validere om strengen er et CPR-nummer? Så misforstod jeg, og ja, \b er en mulighed, ligesom [^\d] eller lignende er.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester