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

@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