Skip to content

Instantly share code, notes, and snippets.

@christiaanwesterbeek
Last active November 24, 2023 10:53
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save christiaanwesterbeek/c574beaf73adcfd74997 to your computer and use it in GitHub Desktop.
Save christiaanwesterbeek/c574beaf73adcfd74997 to your computer and use it in GitHub Desktop.
Splitsen van een nederlands adres naar straat, huisnummer en toevoeging middels een regular expression. Deutsch-Adressen werden jetzt auch unterstützt.
let re = /^(\d*[\wäöüß\d '\/\\\-\.]+)[,\s]+(\d+)\s*([\wäöüß\d\-\/]*)$/i
let adressen = [
'Dorpstraat 2',
'Dorpstr. 2',
'Laan 1933 2',
'18 Septemberplein 12',
'Kerkstraat 42-f3',
'Kerk straat 2b',
'42nd street, 1337a',
'1e Constantijn Huigensstraat 9b',
'Maas-Waalweg 15',
'De Dompelaar 1 B',
'Kümmersbrucker Straße 2',
'Friedrichstädter Straße 42-46',
'Höhenstraße 5A',
'Saturnusstraat 60-75',
'Saturnusstraat 60 - 75',
'Plein \'40-\'45 10',
'Plein 1945 1',
'Steenkade t/o 56',
'Steenkade a/b Twee Gezusters',
'1, rue de l\'eglise'
]
let matches = adressen.map((adres) => {
let match = adres.match(re)
return `<td>${adres}</td><td>${match && match.shift() && match.join('</td><td>')}</td>`
})
document.write(`<table><tr>${matches.join('</tr><tr>')}</tr></table>`)
// jsFiddle version here: https://jsfiddle.net/devotis/3wLv7ex2
// Changes 2017-08-23
// allow / and \ in street names
// use es6 and drop the semicolons
// refactor code to produce html table
@Remco75
Copy link

Remco75 commented Sep 4, 2020

@Noxxie
Omdat dat PHP is? Daarmee bedoel ik: deze regex kan je in de meeste talen gewoon parsen. Zou mooi zijn als dit idd een repo wordt, maar dan puur voor de regex, met testen. die wellicht zelfs meerdere talen ondersteund? Ik wil wel helpen als @christiaanwesterbeek dat nog gaat oppakken :-)

@NoxxieNl
Copy link

NoxxieNl commented Sep 4, 2020

@Remco75 het is wellicht nog niet perfect maar https://github.com/NoxxieNl/Nladdresslexer

@zentek-jannes-grueneberg

We figured out a few problems with german addresses, where the house number is a range or even written like 5+6.
Here is an updated Regex.
RE: ^(\d*[\p{L}\d '\/\\\-\.]+?)[,\s]+((?:\d+)\s*(?:[\p{L}\d\/]*(?:\s*[-+]\s*[\p{L}\d\-+\/]*)?))$
RE with sample data: https://regex101.com/r/BaQUN4/1
Bye

@NickB23
Copy link

NickB23 commented Jan 12, 2023

We figured out a few problems with german addresses, where the house number is a range or even written like 5+6. Here is an updated Regex. RE: ^(\d*[\p{L}\d '\/\\\-\.]+?)[,\s]+((?:\d+)\s*(?:[\p{L}\d\/]*(?:\s*[-+]\s*[\p{L}\d\-+\/]*)?))$ RE with sample data: https://regex101.com/r/BaQUN4/1 Bye

Here's the python equivalent if anyone is interested:

r"^(\d*[\w\d '\/\\\-\.]+?)[,\s]+((?:\d+)\s*(?:[\w\d\/]*(?:\s*[-+]\s*[\w\d\-+\/]*)?))$"

@drummerik
Copy link

Beste collega's -g, wanneer het huisnummer + toevoeging bijvoorbeeld 24-2 is, wordt deze niet goed gesplitst in de regex die ik gebruik. De 2 wordt dan als huisnummer gezien. Is hier al een oplossing voor? Groet

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment