From 951755eaf422360408063ce751c0077a71d9c58d Mon Sep 17 00:00:00 2001 From: lash Date: Sun, 12 Jan 2025 08:27:04 +0000 Subject: [PATCH] Add phone number formatter --- phone/phone.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/phone/phone.go b/phone/phone.go index f1e5510..70d7b55 100644 --- a/phone/phone.go +++ b/phone/phone.go @@ -1,7 +1,9 @@ package phone import ( + "errors" "regexp" + "strings" ) // Define the regex patterns as constants @@ -14,3 +16,25 @@ func IsValidPhoneNumber(phonenumber string) bool { match, _ := regexp.MatchString(phoneRegex, phonenumber) return match } + +// FormatPhoneNumber formats a Kenyan phone number to "+254xxxxxxxx". +func FormatPhoneNumber(phone string) (string, error) { + if !IsValidPhoneNumber(phone) { + return "", errors.New("invalid phone number") + } + + // Remove any leading "+" and spaces + phone = strings.TrimPrefix(phone, "+") + phone = strings.ReplaceAll(phone, " ", "") + + // Replace leading "0" with "254" if present + if strings.HasPrefix(phone, "0") { + phone = "254" + phone[1:] + } + // Add "+" if not already present + if !strings.HasPrefix(phone, "254") { + return "", errors.New("unexpected format") + } + + return "+" + phone, nil +}