Teoretycznie można to zrobić rozdzielając każdy segment adresu na kilka pól, np.: ulica, numer domu, numer lokalu.
Wtedy na numer domu czy lokalu można ustawić walidację numeru poprzez pole <input id="number" type="number">
- przeglądarka nie przepuści wtedy innej wartości niż numer.
Problem w tym, że walidacja adresu to chyba rzecz niemożliwa w 100% sprawdzenia. Adres to bardzo złożona informacja. Nie zawsze jest np. ul. Warszawska. Czasami jest os. (osiedle), al. (aleja) albo jeszcze coś innego. Do tego dochodzą numery domów/lokali np. może być 20/34 jako numer domu (a nie domu i lokalu), albo 20-34, albo 20a,b,c lub numer 20 - I piętro, przy adresach np. dla firm. Bardzo ciężko jest określić czy akurat ten adres co ktoś wpisał jest prawdziwy. Dlatego zazwyczaj w sklepach internetowych takie pola dla adresów mają pewną dowolność.
Spotkałem się kiedyś z pewną formą walidacji ale dość skomplikowaną (np. w formularzach od ubezpieczeń). Wpisuje się tam kod pocztowy miasta i potem można już tylko z listy wybrać ulicę. Jakieś pola w stylu województwo, gmina itd. uzupełniają się same. Ale zawsze potem numer domu/lokalu pozostaje bez walidacji. Jednakże to są już bardziej złożone systemy oparte prawdopodobnie na pewnych zewnętrznych usługach wyciągania informacji na podstawie zadanych parametrów.
Zazwyczaj założenie jest takie w sklepach, że jak ktoś chce otrzymać towar, to adres wpisze poprawny :)