user710502
user710502

Reputation: 11469

Regular expression for Phone Numbers with different lengths

I searched on Google for phone number regex validations but haven't been able to make it work based on my requirements.

Basically, I have three separate sets of rules for the prefix:

After that I can allow letters like 1888GOSUPER or something like that (this would fall under the second condition)

This is what I have so far but I am not certain if I have covered everything:

var reg10 = /^[2-9]{3}[a-z0-9]+$/i;
var reg11 = /^[1-9]{4}[a-z0-9]+$/i;
var reg12plus = /^[0-9]{7}[a-z0-9]+$/i;

Upvotes: 0

Views: 869

Answers (1)

Sepster
Sepster

Reputation: 4849

This can be handled by one regex (including your check for length, as suggested by others). Probably can be done more succinctly than this, but I feel this is more readable in the context of your 3 specifically separate prefix requirements:

^(?:[2-9]{3}[a-z0-9]{7})$|^(?:[1-9]{4}[a-z0-9]{7})$|^(?:[0-9]{7}[a-z0-9]{5,})$

Basically combines your three separate cases via "alternation" |

This can be "normalised" slightly, without "breaking" the clarity of intent, by grouping the entire expression and then surrounding with start/end anchors (rather than repeating these in each option, as above). Although this results in a similar length rule overall, by the time we add our additional non-capturing group:

^(?:(?:[2-9]{3}[a-z0-9]{7})|(?:[1-9]{4}[a-z0-9]{7})|(?:[0-9]{7}[a-z0-9]{5,}))$

Upvotes: 3

Related Questions