^(\+98|0)?9\d{9}$
var regex = new RegExp('^(\\+98|0)?9\\d{9}$');
var result = regex.test('+989031234567');
console.log(result);^(\+98|0)?9\d{9}$
var regex = new RegExp('^(\\+98|0)?9\\d{9}$');
var result = regex.test('+989031234567');
console.log(result);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.
This one works perfectly, also a small change so its works for this format to : 9110000000
edited regex: /^(0|0098|\+98|)9(0[1-5]|[1 3]\d|2[0-2]|98)\d{7}$/i
this support all new mobile operator format
/^09(0[1-5]|1[0-9]|2[012]|3[0235-9]|9[0-4]|98|99)\d{7}$/
this support all new mobile operator format
/^09(0[1-5]|1[0-9]|2[012]|3[0235-9]|9[0-4]|98|99)\d{7}$/
this doesn't include +989000000000
For that you can use this regex: /(^(0?9)|(\+?989))((14)|(13)|(12)|(19)|(18)|(17)|(15)|(16)|(11)|(10)|(90)|(91)|(92)|(93)|(94)|(95)|(96)|(32)|(30)|(33)|(35)|(36)|(37)|(38)|(39)|(00)|(01)|(02)|(03)|(04)|(05)|(41)|(20)|(21)|(22)|(23)|(31)|(34)|(9910)|(9911)|(9913)|(9914)|(9999)|(999)|(990)|(9810)|(9811)|(9812)|(9813)|(9814)|(9815)|(9816)|(9817)|(998))\W?\d{3}\W?\d{4}/gm
I should mention that in my previous regex I only focused on validating real Iranian mobile number prefixes rather than just the general phone number structure, and since in my environment there was no need for supporting the “+98” format, I didn’t include it.
This new regex is taken from the Iranian Phone Number Validation repository, which provides a more complete and standardized list of valid prefixes.
👌👌
^09(1[0-9] |2[0-2] |3[0-9] |9[0-9]) [0-9]{7}$