Skip to content

Instantly share code, notes, and snippets.

@morrismukiri
Last active June 19, 2024 06:05
Show Gist options
  • Save morrismukiri/920494322a47d9485bbc to your computer and use it in GitHub Desktop.
Save morrismukiri/920494322a47d9485bbc to your computer and use it in GitHub Desktop.
Kenyan phone number regular expression
@Dcolonel6
Copy link

hey what if u just want +2547*** only?

@ratatatKE
Copy link

If you want a more precise one and a more forgiving one for different typing preferences, you can use this
(\+254|^){1}[ ]?[7]{1}([0-3]{1}[0-9]{1})[ ]?[0-9]{3}[ ]?[0-9]{3}\z

@Code-Buddie
Copy link

If you want to validate +2547, or +2541, or just 07 or 01,
Follow this link for number prefixes in Kenya
^(+254|0)([7][0-9]|[1][0-1]){1}[0-9]{1}[0-9]{6}$

@YveOms
Copy link

YveOms commented Sep 21, 2021

@Code-Buddie how about this one to support 07xxx and 01xx numbers ^(+254|0)([17][0-9]|[1][0-1]){1}[0-9]{1}[0-9]{6}$

@Code-Buddie
Copy link

@Code-Buddie how about this one to support 07xxx and 01xx numbers ^(+254|0)([17][0-9]|[1][0-1]){1}[0-9]{1}[0-9]{6}$

it still works
RegExp regExp = new RegExp(
r"^(+254|0)([7][0-9]|[1][0-1]){1}[0-9]{1}[0-9]{6}$",
caseSensitive: false,
multiLine: false,
);

@LukeNgirubiu
Copy link

LukeNgirubiu commented Nov 23, 2023

The python code snippet below validates a kenyan mobile phone number (For all service providers). The following 8 formats are valid. Any other format is invalid.

  1. 07XXXXXXXX
  2. 2547XXXXXXXX
  3. 7XXXXXXXX
  4. +2547XXXXXXXX
  5. 01XXXXXXXX
  6. 1XXXXXXXX
  7. +2541XXXXXXXX
  8. 2541XXXXXXXX
    validating_kenyan_number
    If the value of valid is None, then the mobile number provided doesn't match any of the formats listed above.

@Steven-zion
Copy link

right now we have number starting with both 07 and 01, what's the regex for that?

@LukeNgirubiu
Copy link

LukeNgirubiu commented Apr 19, 2024 via email

@Code-Buddie
Copy link

`import re

pattern = r'^(+254|0)([7][0-9]|[1][0-1]){1}[0-9]{1}[0-9]{6}$'

Test the pattern

phone_numbers = [
"+254712345678",
"0712345678",
"0112345678"
]

for number in phone_numbers:
if re.match(pattern, number):
print(f"{number} is a valid phone number.")
else:
print(f"{number} is not a valid phone number.")
`

@Steven-zion
Copy link

the phone input am using holds the phone to state in the format +254 712 345678, it has refused to pass most regex. can it be the spacing. please provide me with a regex that validates this exactly as it is, thanks

@LukeNgirubiu
Copy link

LukeNgirubiu commented May 4, 2024 via email

@ElzaCremin
Copy link

ElzaCremin commented May 15, 2024

Can I also ask a question because I have some doubts about it? Last semester, I was under immense pressure to finish my dissertation. I found https://ukwritings.com/write-my-dissertation and they came to my rescue. Their writers are experts in various fields, and they delivered a well-structured dissertation on time. The service was worth every penny, and I couldn't be happier with the result.

@obbyK
Copy link

obbyK commented Jun 14, 2024

Works with Java, but you can probably simplify them further.

Safaricom (\\+?254|0)?([7][0129][0-9]|[7][4][0123568]|[7][5][789]|[7][6][89]|[1][1][012345]){1}[0-9]{6}
Airtel (\\+?254|0)?([7][38][0-9]|[7][5][0123456]|[7][6][2]|[1][0][012345678]){1}[0-9]{6}
Telkom (\\+?254|0)?(77[0-9]){1}[0-9]{6}
Faiba (\\+?254|0)?(747){1}[0-9]{6}
Equitel (\\+?254|0)?(76[3456]){1}[0-9]{6}

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