Regex telefoonnummer BE en NL

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wim E

Wim E

02/05/2011 13:30:39
Quote Anchor link
Beste,

Ik ben op zoek naar een Regex voor telefoonnummers van BE en NL nummers.
Het gaat hier dus om mobiel en vast. Enkele voorbeelden van nummers zijn:

NL:
+31 89 1234567 (of aan elkaar)
0031 89 1234567 (of aan elkaar)
089-1234567
089 1234567 (of aan elkaar)
(089)1234567

BE:
012345678
0032 12345678 (of aan elkaar)
+32 12345678

Ik heb hierop al veel gezocht maar vind niet in combinatie.

Hartelijk dank!
 
PHP hulp

PHP hulp

21/11/2024 12:57:13
 
Chris -

Chris -

02/05/2011 16:20:16
Quote Anchor link
De exacte regex weet ik even niet uit m'n hoofd, maar als je nou eens het volgende doet.

De + vervangen door twee nullen
Alle overige tekens verwijderen (\D)
Tellen hoeveel cijfers je over houd?
 
Daniel O

Daniel O

02/05/2011 17:12:01
Quote Anchor link
@Wim wat wil je doen? Wil je zoeken naar telefoonnummers in lappen tekst?
@Chris in dat geval heeft jouw methode niet zoveel zin...

Als je documenten/sites/bestanden wilt scannen op telefoonnummers, zou ik omwille van de readability en maintainability een paar losse regex schrijven.
bijv:
[^\(\d]((?:\+|00)31[\s-]?\d{2}\s?\d{7}) // voor de bovenste twee NL telnrs
[^\(\d](\(?0\d{2}\)?[\s-]?\d{7}|\(0\d{3}\)[\s-]?\d{6}) // voor de volgende 3
etc.
 
Wim E

Wim E

06/05/2011 15:37:32
Quote Anchor link
mmm dat is een goede...

Bedoeling is dat voor een klant van mij moet ik afdwingen van een valide telefoonnummer uit Nederland of Belgie.Overigens moet dit alles toch wel in 1 regex passen?

"+" - optie
"00" - optie
"0" - optie
tussen de 2 en 4 cijfers
"-" - optie
" " - optie
tussen de 6 en 8 cijfers

Volgens mij vang je hiermee zowel de Nederlandse als Belgische telefoonnummers mee af.

Nu alleen nog in Regex (A)
 
Daniel O

Daniel O

06/05/2011 16:27:05
Quote Anchor link
Hoi Wim,

Het lastige is dat je een conditie moet inbouwen in je regex. Dat kan mbv lookahead, maar dan krijg je een redelijk uitgebreide regex, die moeilijk leesbaar en onderhoudbaar is. Als je simpelweg zegt:
\d{2,4}[\s-]?\d{6,8}
dan passeert 0229-12345678 ook als een geldig telefoonnummer. Een 8-cijferig telnr is alleen toegestaan bij een 2-cijferig kengetal. En 7 cijfers alleen bij een 3-cijferig kengetal enz. En dat zijn alleen nog de nederlandse regels.

Gezien de situatie en gezien jouw ervaring met regex, zou ik de tip van Chris opvolgen: het telefoonnummer opschonen, en daarna controleren hoeveel cijfers je hebt (en evt. of het telefoonnummer met een 0 begint).

Succes.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.