שימוש ב- libphonenumber לאימות מספרי טלפון

1. סקירה כללית

במדריך מהיר זה, נראה כיצד להשתמש ספריית הקוד הפתוח של גוגל מספר libphonen לאימות מספרי טלפון ב- Java.

2. תלות של Maven

ראשית, נצטרך להוסיף את התלות בספריה זו בספריה שלנו pom.xml:

 com.googlecode.libphonenumber libphonenumber 8.12.10 

מידע על הגרסאות העדכניות ביותר ניתן למצוא באתר Maven Central.

כעת אנו מצוידים להשתמש בכל הפונקציונליות שיש לספרייה הזו להציע.

3. PhoneNumberUtil

הספרייה מספקת מחלקת כלי עזר, PhoneNumberUtil, המספק מספר שיטות לשחק עם מספרי טלפון.

בואו נראה כמה דוגמאות כיצד נוכל להשתמש בממשקי ה- API השונים שלו לצורך אימות.

חשוב לציין, שבכל הדוגמאות נשתמש באובייקט הסינגלטון של מחלקה זו לביצוע שיחות שיטה:

PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance ();

3.1. isPossibleNumber

באמצעות פhoneNumberUtil # isPossibleNumber, אנו יכולים לבדוק אם מספר נתון אפשרי עבור קוד מדינה או אזור מסוים.

לדוגמא, ניקח את ארצות הברית, שיש לה קוד מדינה 1. אנו יכולים לבדוק אם מספרי טלפון נתונים הם מספרי ארה"ב אפשריים באופן זה:

@Test הציבור בטל givenPhoneNumber_whenPossible_thenValid () {PhoneNumber number = PhoneNumber חדש (); number.setCountryCode (1) .setNationalNumber (123000L); assertFalse (phoneNumberUtil.isPossibleNumber (מספר)); assertFalse (phoneNumberUtil.isPossibleNumber ("+ 1 343 253 00000", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("(343) 253-00000", "US")); assertFalse (phoneNumberUtil.isPossibleNumber ("חייג p עבור פיצה", "ארה"ב"); assertFalse (phoneNumberUtil.isPossibleNumber ("123-000", "US")); }

פה, השתמשנו בגרסה אחרת של פונקציה זו גם על ידי מעבר באזור שאנחנו מצפים למספר שיוחייג אליו כ- חוּט.

3.2. isPossibleNumberForType

הספריה מזהה סוגים שונים של מספרי טלפון, כגון קו קבוע, נייד, חיוג חינם, דואר קולי, VoIP, ביפר ועוד רבים אחרים.

שיטת השירות שלה isPossibleNumberForType בודק אם המספר הנתון אפשרי עבור סוג מסוים באזור מסוים.

כדוגמה, בואו נלך לארגנטינה מכיוון שהיא מאפשרת אורכים שונים של מספרים מסוגים שונים.

לפיכך, אנו יכולים להשתמש בו כדי להדגים את היכולת של API זה:

@Test הציבור בטל givenPhoneNumber_whenPossibleForType_thenValid () {PhoneNumber number = טלפון חדש (); number.setCountryCode (54); number.setNationalNumber (123456); assertTrue (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.FIXED_LINE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.TOLL_FREE)); number.setNationalNumber (12345678901L); assertFalse (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.FIXED_LINE)); assertTrue (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.MOBILE)); assertFalse (phoneNumberUtil.isPossibleNumberForType (number, PhoneNumberType.TOLL_FREE)); }

כפי שניתן לראות, הקוד שלעיל מאמת שארגנטינה מתירה מספרי קו קבוע בן 6 ספרות ומספרים ניידים בעלי 11 ספרות.

3.3. isAlphaNumber

שיטה זו משמשת כדי לוודא אם מספר הטלפון הנתון הוא מספר אלפא-נומרי חוקי, כגון 325-מכוניות:

@Test public void givenPhoneNumber_whenAlphaNumber_thenValid () {assertTrue (phoneNumberUtil.isAlphaNumber ("325-CARS")); assertTrue (phoneNumberUtil.isAlphaNumber ("תיקון 0800"); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MY-APPLE")); assertTrue (phoneNumberUtil.isAlphaNumber ("1-800-MY-APPLE ..")); assertFalse (phoneNumberUtil.isAlphaNumber ("+ 876 1234-1234")); }

לשם הבהרה, מספר אלפא תקף מכיל לפחות שלוש ספרות בהתחלה, ואחריו שלוש אותיות אלפבית או יותר. שיטת השירות שלמעלה מסירה תחילה את הקלט הנתון מכל עיצוב ואז בודקת אם מצב זה.

3.4. isValidNumber

ה- API הקודם עליו דנו בודק במהירות את מספר הטלפון על בסיס אורכו בלבד. מצד שני, isValidNumber מבצע אימות מלא באמצעות קידומת כמו גם מידע אורך:

@Test ציבורי בטל givenPhoneNumber_whenValid_thenOK () זורק חריג {PhoneNumber טלפון = phoneNumberUtil.parse ("+ 911234567890", CountryCodeSource.UNSPECIFIED.name ()); assertTrue (phoneNumberUtil.isValidNumber (טלפון)); assertTrue (phoneNumberUtil.isValidNumberForRegion (טלפון, "IN")); assertFalse (phoneNumberUtil.isValidNumberForRegion (טלפון, "ארה"ב")); assertTrue (phoneNumberUtil.isValidNumber (phoneNumberUtil.getExampleNumber ("IN"))); }

כאן המספר מאומת כאשר לא ציינו אזור, וכמו כן.

3.5. isNumberGeographical

שיטה זו בודקת אם מספר מסוים משויך לגיאוגרפיה או לאזור:

@Test הציבור בטל givenPhoneNumber_whenNumberGeographical_thenValid () זורק NumberParseException {PhoneNumber טלפון = phoneNumberUtil.parse ("+ 911234567890", "IN"); assertTrue (phoneNumberUtil.isNumberGeographical (טלפון)); טלפון = מספר טלפון חדש (). setCountryCode (1). setNationalNumber (2530000L); assertFalse (phoneNumberUtil.isNumberGeographical (טלפון)); טלפון = מספר טלפון חדש (). setCountryCode (800). setNationalNumber (12345678L); assertFalse (phoneNumberUtil.isNumberGeographical (טלפון)); }

כאן, בהצהרה הראשונה לעיל, נתנו את מספר הטלפון במתכונת בינלאומית עם קוד האזור, והשיטה החזירה אמת. הטענה השנייה משתמשת במספר מקומי מארה"ב, והשלישית במספר חינם. אז ה- API החזיר כוזב עבור שני אלה.

4. מסקנה

במדריך זה ראינו חלק מהפונקציונליות שמציעה מספר libphonen לעצב ולאמת מספרי טלפון באמצעות דוגמאות קוד.

זוהי ספרייה עשירה המציעה פונקציות שירות רבות נוספות ומטפל ברוב צרכי היישום שלנו לעיצוב, ניתוח ואימות מספרי טלפון.

כמו תמיד, קוד המקור זמין ב- GitHub.


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