^(\+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
^09(1[0-9] |2[0-2] |3[0-9] |9[0-9]) [0-9]{7}$