Skip to content

Instantly share code, notes, and snippets.

@MoienTajik
Last active April 22, 2024 06:01
Show Gist options
  • Star 47 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save MoienTajik/acd3dbb359054bd22e06cc97281934eb to your computer and use it in GitHub Desktop.
Save MoienTajik/acd3dbb359054bd22e06cc97281934eb to your computer and use it in GitHub Desktop.
Regex For Iranian Mobile Phone Numbers

Regex For Iranian Phone Numbers

This regex supports all kinds of Iranian mobile phone numbers :

^(\+98|0)?9\d{9}$


Regex Visualized

Usage in JavaScript :

var regex = new RegExp('^(\\+98|0)?9\\d{9}$');
var result = regex.test('+989031234567');

console.log(result);

Regex Tester Demo

JSFiddle Demo

@imanghafoori1
Copy link

(+98|0|98|0098)?([ ]|-|[()]){0,2}9[0-9]([ ]|-|[()]){0,2}(?:[0-9]([ ]|-|[()]){0,2}){8}/

This is in fact much better

@MoienTajik
Copy link
Author

Have you found any edge cases in that one?

@mahdib619
Copy link

I think it's very accurate
(+98|0|98)9(0[1-5]|[1 3]\d|2[0-2]|98)\d{7}

@PAPIONbit
Copy link

Thanks for the sharing and also choosing the best RegEx Visualizer (I mentioned it for curious programmers)
But:

  1. I think the title should be changed to "RegEx For Iranian Mobile Numbers"
  2. The just possible problem is using 0098 should be acceptable too
  • If it want to be used as an Input pattern we don't need the ^ and $
  • If we want the number be sure a mobile number, i think it is better to remove the ? too

Something like:
((\+|00)98|0)9\d{9}

Hint: Persians and Arabs should be careful about difference between numbers on mobile keyboards while typing. Because \d can not detect Persian numbers.
For example : ۰۱۲ != 123
So we have to replace all Persian/Arabic numbers before checking. RegEx for detecting : /[\u0660-\u0669\u06f0-\u06f9]/g

@kasir-barati
Copy link

kasir-barati commented Aug 4, 2021

I think this is much much better: ^(0|0098|\+98)9(0[1-5]|[1 3]\d|2[0-2]|98)\d{7}$

Side notes:

  • And as @PAPIONbit mentioned you need to sanitize the data before validation.
  • And I like to save one format in the database: so I convert all phone numbers to 0098 (for Iran), and for an international app I would like to prefix all numbers with their country code.

RegEx Visualizer

@alisamie97
Copy link

alisamie97 commented Feb 8, 2022

for php guys

function is_phone($phone){
    $pattern = '/(\+?98|098|0|0098)?(9\d{9})/';	
    return preg_match($pattern, $phone) ? true : false;
} 

@AliVP97
Copy link

AliVP97 commented Jun 13, 2022

Regex For Iranian Home Phone Numbers

This regex supports all kinds of Iranian home phone numbers :

^0[1-8]{2}[0-9]{8}$


Regex Visualized

Usage in JavaScript :

var regex = new RegExp('^0[1-8]{2,}[0-9]{8,}$');
var result = regex.test('02132621441');

console.log(result);

Regex Tester Demo

@abolfazl-sh1
Copy link

The most complete regex For Iranian Phone Numbers:
/^(0|0098|+98)9(0[1-5]|[1 3]\d|2[0-2]|9[0-4]|98)\d{7}$/

@DevMojahed
Copy link

I think this is much much better: ^(0|0098|\+98)9(0[1-5]|[1 3]\d|2[0-2]|98)\d{7}$

Side notes:

  • And as @PAPIONbit mentioned you need to sanitize the data before validation.
  • And I like to save one format in the database: so I convert all phone numbers to 0098 (for Iran), and for an international app I would like to prefix all numbers with their country code.

RegEx Visualizer

Hi kasir-barati
I test many thing but not work well, but yours was really great
thanks

@amirgholikhani
Copy link

amirgholikhani commented May 27, 2023

I think this is much better
/^(098|0098|98|\+98|0)?9(0[0-5]|[1 3]\d|2[0-3]|9[0-9]|41)\d{7}$/g

You can test it to make sure it works. This RegEx has also been updated.
https://regex101.com/

@AmirMahdyJebreily
Copy link

Here we have a whole regex that validates Iranian phone numbers by separating the operator from each other
https://github.com/AmirMahdyJebreily/iranian-phonenumber-validation/graphs/traffic

@omidgharib
Copy link

you can use /^(0|09|09[0-9]{1,9})$/ in onchangetext

@AzMostafa
Copy link

AzMostafa commented Jan 10, 2024

hey guys
you can use this regex and enjoy:
/^((98|\+98|0098|0)*(9)[0-9]{9})+$/

look at this image:
image (1)

in this you can validation persian phone number like:

  1. with_out_zero: 9120000000
  2. with_zero: 09120000000
  3. with_zero_code: 00989120000000
  4. with_plus: +989120000000
  5. with_out_plus: 989120000000

also you can see this git repository and use other regex validating, filtering, sanitizing and finding Persian strings in laravel framework and kotlin.

@rezacloner1372
Copy link

^09(1[0-9] |2[0-2] |3[0-9] |9[0-9]) [0-9]{7}$

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