Regular Expressions - Kontrollera personnummer

korvgubbe

Ny medlem
Gick med
13 May 2003
Ort
Sthlm
Hoj
Versys -08
Någon som skulle kunna hjälpa mig att skriva ett reguljärt uttryck för att validera Personnummer.

Personnumren skall vara i formatet:
ÅÅÅÅMMDDNNNN
 
korvgubbe skrev:
2476999 Någon som skulle kunna hjälpa mig att skriva ett reguljärt uttryck för att validera Personnummer.

Personnumren skall vara i formatet:
ÅÅÅÅMMDDNNNN

använd modulo 10 för at validera pnr. När du tittat på hur modulo 10 fungerar, är det lätt att skriva uttrycket.
 
Santo skrev:
2477199 använd modulo 10 för at validera pnr. När du tittat på hur modulo 10 fungerar, är det lätt att skriva uttrycket.

Det är inte bara checksiffran som behöver kollas. Vill även se så man anget 19 i början och att personnumret är tillräckligt långt.

Problemet är inte att greppa modul 10. Problemet är att skriva det som regular expressions.. :näsblod
 
Alltså ett reguljärt uttryck som kontrollerar ett helt personnummer är lite overkill.

Bryt ned problemet istället.
 
korvgubbe skrev:
2477204 Det är inte bara checksiffran som behöver kollas. Vill även se så man anget 19 i början och att personnumret är tillräckligt långt.

Problemet är inte att greppa modul 10. Problemet är att skriva det som regular expressions.. :näsblod


Det här kollar så att det finns en 1a och en 9a och sedan 10 valfria siffror
^19\d{10}$


EDIT: Jaha, checksiffran också... bah... återkommer

EDIT2: Genast förstod jag vad burner menade, att börja multiplicera och addera med reguljära uttryck verkar fantastiskt opraktiskt. Jag skulle nog välja ett reguljärt uttryck för att kolla att man fått in rätt mängd siffror och sedan bara någon enkel metod för att gå igenom checksiffran.
 
Last edited:
korvgubbe skrev:
2477267 Kan du komplettera med checksifferkontroll vore det grejt! :tummenupp

Hittade lite gammal kod jag skrev för ett tag sen (har för mig att du kör med .Net FW):

// ÅÅÅÅ-MM-DD fr.om. XXXX-[0-1][1-9]-[1-3][1-9]
System.Text.RegularExpressions.Regex rgExDate = new System.Text.RegularExpressions.Regex(@"^([1-2]{1}[0-9]{3}[-][0-1]{1}[0-9]{1}[-][0-3]{1}[0-9]{1})$", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
RegMatch = rgExDate.Match(sDat.Text);

Ngn checkkontroll finns inte men jag skickar en färdig metod du kan använda:
public static string CheckPersonnummer( string Personnummer)
{
string pnr = Personnummer; // Validering av personnummer
int i;
int sum = 0;
int tmp = 0;

pnr = pnr.Replace("-","");

if (pnr == "")
return "";

if (!IsNumeric(pnr))
return "Endast siffror";

else if (pnr.Length != 10)
return "Fel antal siffror";

for (i=0; i<9; i++)
{
if (i % 2 == 0)
{
tmp = 2 * Convert.ToInt32(pnr.Substring(i,1));
if (tmp > 9)
sum += (tmp - 9);
else
sum += tmp;
}
else
{
sum += Convert.ToInt32(pnr.Substring(i,1));
}

}

if ((sum % 10) != 0)
{
if ((10 - (sum % 10)) != Convert.ToInt32(pnr.Substring(9,1)))
{
return "Icke giltigt nummer";
}
else
{
return "";
}
}
else
{
if (Convert.ToInt32(pnr.Substring(9,1)) != 0)
{
return "Icke giltigt nummer";
}
else
{
return "";
}

}
}



Rekommenderar även följande site:
http://regexlib.com/DisplayPatterns.aspx
 
Valen skrev:
2477333 Hittade lite gammal kod jag skrev för ett tag sen (har för mig att du kör med .Net FW):

Rekommenderar även följande site:
http://regexlib.com/DisplayPatterns.aspx

Tack för engagemanget!

jag har redan en checksifferkollarmetod i min lösning men jag hoppades på att kunna använda en regular expression för att slippa göra ett serveranrop. Alltså låta kontrollen ske hos klienten. Meningen är att kunna använda .Nets smidiga formulärvalidering. RequiredFieldValidator som man kopplar till en TextBox
 
korvgubbe skrev:
2477353 Tack för engagemanget!

jag har redan en checksifferkollarmetod i min lösning men jag hoppades på att kunna använda en regular expression för att slippa göra ett serveranrop. Alltså låta kontrollen ske hos klienten. Meningen är att kunna använda .Nets smidiga formulärvalidering. RequiredFieldValidator som man kopplar till en TextBox

Kan du inte bara skriva ett javascript för det?
Behöver väl inte bums vara ett regexp?
 
[Akryl]*Amid skrev:
2477360 Behöver väl inte bums vara ett regexp?

Behöver och behöver.. det vore oerhört smidigt eftersom det finns ett så bra stöd för att sammanställa alla valideringsresultat med en annan smidig komponent som heter "validation summary"...

Finns iofs en valideringstyp som heter "CustomValidator" och det är möjligt man kan lägga in ett javascript i den.. Måste plugga på lite.
 
korvgubbe skrev:
2477353 Tack för engagemanget!

jag har redan en checksifferkollarmetod i min lösning men jag hoppades på att kunna använda en regular expression för att slippa göra ett serveranrop. Alltså låta kontrollen ske hos klienten. Meningen är att kunna använda .Nets smidiga formulärvalidering. RequiredFieldValidator som man kopplar till en TextBox

Aha, men då är nog Akryl's förslag ändå bäst. Vet att jag har ngt script för detta någonstans men det går nog rätt fort att googla fram.
 
korvgubbe skrev:
2477379 Behöver och behöver.. det vore oerhört smidigt eftersom det finns ett så bra stöd för att sammanställa alla valideringsresultat med en annan smidig komponent som heter "validation summary"...

Finns iofs en valideringstyp som heter "CustomValidator" och det är möjligt man kan lägga in ett javascript i den.. Måste plugga på lite.

Ganska så insnöad på utveckling med hjälp av M$ :hihi

Själv skulle jag nog spy av att sitta och utveckla i .NET.
 
burner skrev:
2477386 Ganska så insnöad på utveckling med hjälp av M$ :hihi

Jo, hela vår lösning är byggd i .Net så visst blir man en aning insnöad.

Men med tanke på hur smidigt asp.net är i jämförelse med gammal asp så är valet enkelt och när hela företaget är hängivna windowsanhängare är det rätt meningslöst att protestera...

.Net är ändå en behaglig bekantskap. Framförallt asp.net särskillt när 99% av lösningarna man bygger jobbar mot databaser.

burner skrev:
Själv skulle jag nog spy av att sitta och utveckla i .NET.

hur mycket har du utvecklat i .Net?
Vad skulle du rekommendera istället?
 
Last edited:
korvgubbe skrev:
2477401 Jo, hela vår lösning är byggd i .Net så visst blir man en aning insnöad.

Men med tanke på hur smidigt asp.net är i jämförelse med gammal asp så är valet enkelt och när hela företaget är hängivna windowsanhängare är det rätt meningslöst att protestera...

.Net är ändå en behaglig bekantskap. Framförallt asp.net särskillt när 99% av lösningarna man bygger jobbar mot databaser.



hur mycket har du utvecklat i .Net?
Vad skulle du rekommendera istället?

Har läst 20p(20 veckor) på Universitet, har även suttit en del hemma och gjort lite saker.
Det räcker för mig, vill inte lära mig mer då jag ändå inte vill arbeta med det senare i livet.

Vad jag skulle rekommendera beror på vad du utvecklar, för nätet är det absolut PHP.

Grafiska applikationer skulle jag köra enligt nedan prio.

1.C++(QT)
2.Java.
3.C
4.PyQT
5.Gtk2-Perl
....
....
100. .NET

Jag försöker att använda så lite produkter som möjligt som M$ har att göra med. Då applikationerna och operativsystemen är utvecklade helt utan tanke på säkerhet så är mitt val inte svårt.

korvgubbe skrev:
hela företaget är hängivna windowsanhängare är det rätt meningslöst att protestera...
....
:zpy
 
Last edited:
Undrar vem det är som är insnöad...

Att säga att PHP är det enda vettiga att utveckla webgrejer med är ju som att säga att man bara kan köra suzuki (för yamaha och honda är skit, och ducati är som ett gammalt cgi-skript)

Det är nog du som behöver lite vidsynthet. Missförstå mig rätt, jag jobbar hela dagarna med att utveckla i PHP. Men PHP är ett otroligt smutsigt språk, lösa regler, märkliga fenomen händer om du inte tänker på korrekt typecasting etc.

PHP och .Net har vissa likheter när det gäller lathetsfunktioner/API:er, ta tex funktioner som:

nl2br()
wordwrap()
str_repeat()
array_fill()

Ja, du förstår vart jag vill komma. Snacka om att fördumma sina utvecklare..

f.ö så är det inte enligt mig möjligt att göra en MOD10 kontroll via regexp. I såna fall behöver man använda några jävligt hightech-funktioner som jag inte känner till =)
 
Last edited:
Nyheter
Full fart på Bike Trollhättan-dagarna

Just nu har portarna öppnat...

MV Agusta inför fem års garanti

MV Agusta tar ett nytt steg...

MV Agusta förlänger garantin till fem år

Italienska motorcykeltillve...

Bilprovningen: Motorcyklar överlag i gott skick

Foto: Bilprovningen Nu ä...

Färre döda i vägtrafiken

Foto: Jacob Sjöman, Transpo...

Idag inleds nationella potthålsveckan

I år äger Nationella Potthå...

Nationella Potthålsveckan 1-7 maj

Det är återigen dags för Na...

Motorcykelns Dag 3 maj

Den 3 maj är det Motorcykel...

Bilprovningen: Brister hos var fjärde motorcykel

Foto: Bilprovningen Våre...

Europeisk kampanj för säkrare motorcykelkörning

Den europeiska branschorgan...

Back
Top