Regex omnummeren telefoonnummer

Pagina: 1
Acties:
  • 445 views sinds 30-01-2008
  • Reageer

Acties:
  • +1 Henk 'm!

  • moulin
  • Registratie: September 2002
  • Laatst online: 31-05 23:22
Ik ben bezig om in een database telefoonnummers om te zetten naar +31. De velden zien er als volgt uit:

06-12345678
0612345678
0101234567
010-1234567

Nu heb ik al een regular expression die controleert of het nummer klopt:
((^06((\s{0,1})|(\-{0,1}))[0-9]{8}$)|(^[0-9]{3,4}(\s{0,1}|\-{0,1})[0-9]{6,7}$)|(^\+{1}[0-9]{2}(\s{0,1}|\-{0,1})[0-9]{2,3}(\s{0,1}|\-{0,1})[0-9]{6,7}$))

Nu vraag ik mij af hoe ik dit het beste in stukjes kan hakken zodat ik het volgende krijg:

+31612345678
+31101234567

Heeft iemand zoiets dergelijks al een keer geschreven? Ik werk in PHP.

Acties:
  • 0 Henk 'm!

  • disjfa
  • Registratie: April 2001
  • Laatst online: 26-09-2024

disjfa

be

Je kan sowiso alles wat geen 0-9 is weghalen met preg_replace("/[^0-9]/", .... Dat scheelt al een heleboel regexen zoals jij hebt staat nu. Dan moet je mischien een lengte nakijken om te kijken of het 10 karakters zijn :)

disjfa - disj·fa (meneer)
disjfa.nl


Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 22:57
ik zou gewoon de eerste 0 weghalen en er +31 voor terug zetten. En ook afwijkende tekens (alles wat geen cijfer is) weggooien.

Wat doe je met telefoonnummers korten dan 10 getallen?

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
disjfa schreef op woensdag 04 juli 2007 @ 12:26:
Je kan sowiso alles wat geen 0-9 is weghalen met preg_replace("/[^0-9]/", .... Dat scheelt al een heleboel regexen zoals jij hebt staat nu. Dan moet je mischien een lengte nakijken om te kijken of het 10 karakters zijn :)
En checken of het met een nul begint eventueel

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • moulin
  • Registratie: September 2002
  • Laatst online: 31-05 23:22
Ja ik zou alle tekens kunnen verwijderen die niet numeriek zijn. Echter wil ik hier een functie van maken dat ik ook nieuwe telefoonnummers kan toevoegen. Dan is deze stap die ik eerder heb beschreven wellicht wel handig.

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online
NB. geografische nummers zijn altijd 10 cijfers lang. Niet-geografische nummers — bijv. 0800 — zijn variabel.

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Icelus schreef op woensdag 04 juli 2007 @ 12:49:
NB. geografische nummers zijn altijd 10 cijfers lang. Niet-geografische nummers — bijv. 0800 — zijn variabel.
Let op, bovenstaande geldt alleen voor Nederlandse nummers.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • moulin
  • Registratie: September 2002
  • Laatst online: 31-05 23:22
In mijn geval wil ik eerst Nederlandse telefoonnummers om kunnen zetten. Daarna zou het niet heel ingewikkeld moeten zijn om dit om te veranderen voor Duitse en Belgische nummers.

Acties:
  • 0 Henk 'm!

  • Pete
  • Registratie: November 2005
  • Laatst online: 15-12-2024
moulin schreef op woensdag 04 juli 2007 @ 13:29:
In mijn geval wil ik eerst Nederlandse telefoonnummers om kunnen zetten. Daarna zou het niet heel ingewikkeld moeten zijn om dit om te veranderen voor Duitse en Belgische nummers.
Duitsland en Belgie werken gewoon hetzelfde. Pas als je bij italie komt moet je gaan oppassen (die sukkels laten hun nul staan :X)

in NL zou je als volgorde aan kunnen houden:
  • Verwijder alle karakters anders dan 0-9 of een + aant begin
  • Check of het nr al begint met een landcode
  • zo nee, check voor eerste 0 en vervang deze met landcode
  • check of karakter 4 geen nul is

petersmit.eu


Acties:
  • 0 Henk 'm!

  • Piels
  • Registratie: Maart 2001
  • Laatst online: 17-09-2024
Nog even een tip.

Op http://regexlib.com staan diverse regular expressions, voor elk wat wils :)

Windows Phone Apps: Belstatus, Pinautomaten


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 00:10

DataGhost

iPL dev

phsmit schreef op woensdag 04 juli 2007 @ 16:14:
[...]

• check of karakter 4 geen nul is
Waarom? Zoals je hier kan zien is 0180 het eerste geldige netnummer met een 0 op de 4e positie.

Acties:
  • 0 Henk 'm!

Anoniem: 49627

Piels schreef op donderdag 05 juli 2007 @ 14:22:
Op http://regexlib.com staan diverse regular expressions, voor elk wat wils :)
Jij denkt na het lezen van de probleemstelling nog steeds dat regex hiervoor geschikt is?

Regex voor dit doel gebruiken is als een hamer gebruiken om een schroef de muur in te krijgen: Het kan wel maar er is geschikter gereedschap ;)

Acties:
  • 0 Henk 'm!

  • Icelus
  • Registratie: Januari 2004
  • Niet online

Developer Accused Of Unreadable Code Refuses To Comment


Acties:
  • 0 Henk 'm!

  • Mental
  • Registratie: Maart 2000
  • Laatst online: 20-10-2020
DataGhost schreef op donderdag 05 juli 2007 @ 14:28:
[...]


Waarom? Zoals je hier kan zien is 0180 het eerste geldige netnummer met een 0 op de 4e positie.
Klopt, maar als je daar +31 voor zet krijg je:

+31180 .. en is het 4e karakter nog altijd een 1.
Dat lijstje van DataGhost heeft imho een bewuste volgorde.

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 00:10

DataGhost

iPL dev

L4m0r schreef op donderdag 05 juli 2007 @ 20:39:
[...]


Klopt, maar als je daar +31 voor zet krijg je:

+31180 .. en is het 4e karakter nog altijd een 1.
Dat lijstje van DataGhost heeft imho een bewuste volgorde.
Volgens mij bedoel je het lijstje van phsmit. Verder wil ik je argument nog even weerleggen: met 010 krijg je +3110 en dan is het vierde teken alweer een 0. Nog steeds snap ik niet waarom dat geen 0 zou mogen zijn.

Acties:
  • 0 Henk 'm!

  • bemeall
  • Registratie: Februari 2003
  • Laatst online: 22:52

bemeall

Down Under!

En om het dan nog makkelijker te maken bestaat er in Nederland ook nog naambellen :Y)

In het verleden behaalde resultaten bieden geen garantie voor de toekomst...


Acties:
  • 0 Henk 'm!

  • Mental
  • Registratie: Maart 2000
  • Laatst online: 20-10-2020
DataGhost schreef op donderdag 05 juli 2007 @ 21:00:
[...]

Volgens mij bedoel je het lijstje van phsmit. Verder wil ik je argument nog even weerleggen: met 010 krijg je +3110 en dan is het vierde teken alweer een 0. Nog steeds snap ik niet waarom dat geen 0 zou mogen zijn.
Dat lijstje idd..

bij +3110 is het 4e teken alsnog een 1 hoor in mij ogen... de + is ook een teken.
Pagina: 1