Bruke libphonenumber for å validere telefonnumre

1. Oversikt

I denne raske opplæringen vil vi se hvordan du bruker Googles open source-bibliotek libphonenumber for å validere telefonnumre i Java.

2. Maven avhengighet

Først må vi legge til avhengigheten for dette biblioteket i vår pom.xml:

 com.googlecode.libphonenumber libphonenumber 8.12.10 

Den siste versjonsinformasjonen finner du på Maven Central.

Nå er vi rustet til å bruke all funksjonaliteten dette biblioteket har å tilby.

3. PhoneNumberUtil

Biblioteket tilbyr en nytteklasse, PhoneNumberUtil, som gir flere metoder for å leke med telefonnumre.

La oss se noen få eksempler på hvordan vi kan bruke de forskjellige API-ene for validering.

Det er viktig at i alle eksempler bruker vi singleton-objektet til denne klassen til å foreta metodeanrop:

PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance ();

3.1. isPossibleNumber

Ved hjelp av PhoneNumberUtil # isPossibleNumber, kan vi sjekke om et gitt nummer er mulig for en bestemt landskode eller region.

La oss som et eksempel ta USA, som har landskoden 1. Vi kan sjekke om gitte telefonnumre er mulige amerikanske numre på denne måten:

@Test offentlig ugyldighet givenPhoneNumber_whenPossible_thenValid () {PhoneNumber number = new PhoneNumber (); number.setCountryCode (1) .setNationalNumber (123000L); assertFalse (phoneNumberUtil.isPossibleNumber (number)); assertFalse (phoneNumberUtil.isPossibleNumber ("+ 1 343 253 00000", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("(343) 253-00000", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("ring p for pizza", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("123-000", "US")); }

Her, vi brukte også en annen variant av denne funksjonen ved å passere i regionen at vi forventer at nummeret skal ringes fra som en String.

3.2. isPossibleNumberForType

Biblioteket gjenkjenner forskjellige typer telefonnumre, for eksempel fastlinje, mobil, avgiftsfri, telefonsvarer, VoIP, personsøker og mange flere.

Dens verktøymetode isPossibleNumberForType sjekker om det gitte nummeret er mulig for en gitt type i en bestemt region.

Som et eksempel, la oss gå til Argentina, siden det gir forskjellige mulige lengder på tall for forskjellige typer.

Derfor kan vi bruke den til å demonstrere evnen til dette API:

@Test offentlig ugyldig givenPhoneNumber_whenPossibleForType_thenValid () {PhoneNumber number = new PhoneNumber (); number.setCountryCode (54); number.setNationalNumber (123456); assertTrue (phoneNumberUtil.isPossibleNumberForType (nummer, PhoneNumberType.FIXED_LINE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (nummer, PhoneNumberType.TOLL_FREE)); number.setNationalNumber (12345678901L); assertFalse (phoneNumberUtil.isPossibleNumberForType (nummer, PhoneNumberType.FIXED_LINE)); assertTrue (phoneNumberUtil.isPossibleNumberForType (nummer, PhoneNumberType.MOBILE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (nummer, PhoneNumberType.TOLL_FREE)); }

Som vi kan se, validerer ovennevnte kode at Argentina tillater 6-sifrede fastlinjenumre og 11-sifrede mobilnumre.

3.3. erAlphaNumber

Denne metoden brukes til å verifisere om det gitte telefonnummeret er gyldig alfanumerisk, for eksempel 325-BILER:

@Test offentlig ugyldighet gittPhoneNumber_whenAlphaNumber_thenValid () {assertTrue (phoneNumberUtil.isAlphaNumber ("325-CARS")); assertTrue (phoneNumberUtil.isAlphaNumber ("0800 REPAIR")); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MY-APPLE")); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MY-APPLE .."); assertFalse (phoneNumberUtil.isAlphaNumber ("+ 876 1234-1234")); }

For å avklare inneholder et gyldig alfanumer minst tre sifre i begynnelsen, etterfulgt av tre eller flere alfabetbokstaver. Verktøymetoden ovenfor fjerner først den gitte inngangen av formatering og sjekker deretter for denne tilstanden.

3.4. isValidNumber

Den forrige API-en vi diskuterte sjekker raskt telefonnummeret bare på grunnlag av lengden. På den andre siden, isValidNumber utfører en fullstendig validering ved hjelp av prefiks samt lengdeinformasjon:

@Test offentlig ugyldig givenPhoneNumber_whenValid_thenOK () kaster unntak {PhoneNumber phone = phoneNumberUtil.parse ("+ 911234567890", CountryCodeSource.UNSPECIFIED.name ()); assertTrue (phoneNumberUtil.isValidNumber (telefon)); assertTrue (phoneNumberUtil.isValidNumberForRegion (telefon, "IN")); assertFalse (phoneNumberUtil.isValidNumberForRegion (telefon, "US")); assertTrue (phoneNumberUtil.isValidNumber (phoneNumberUtil.getExampleNumber ("IN"))); }

Her blir nummeret validert når vi ikke spesifiserte en region, og også når vi gjorde det.

3.5. isNumberGeographical

Denne metoden sjekker om et gitt nummer har geografi eller region knyttet til det:

@Test offentlig ugyldighet gittPhoneNumber_whenNumberGeographical_thenValid () kaster NumberParseException {PhoneNumber phone = phoneNumberUtil.parse ("+ 911234567890", "IN"); assertTrue (phoneNumberUtil.isNumberGeographical (telefon)); phone = new PhoneNumber (). setCountryCode (1) .setNationalNumber (2530000L); assertFalse (phoneNumberUtil.isNumberGeographical (telefon)); phone = new PhoneNumber (). setCountryCode (800) .setNationalNumber (12345678L); assertFalse (phoneNumberUtil.isNumberGeographical (phone)); }

Her, i den første påstanden ovenfor, ga vi telefonnummeret i et internasjonalt format med regionskoden, og metoden ble sant. Den andre påstanden bruker et lokalt nummer fra USA, og den tredje et gratisnummer. Så API returnerte falsk for disse to.

4. Konklusjon

I denne opplæringen så vi noe av funksjonaliteten som tilbys av libphonenumber for å formatere og validere telefonnumre ved hjelp av kodeeksempler.

Dette er et rikt bibliotek som tilbyr mange flere verktøyfunksjoner og ivaretar de fleste av applikasjonsbehovene våre for formatering, parsing og validering av telefonnumre.

Som alltid er kildekoden tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found