9 characters requires 2 letters in the beginning i.e ab1234567 and 10 characters needs to have all digits i,e 1234567890. How do I do this using regex?
Here is what I have tried.
/^[a-zA-Z]{2}[\d]{7}|[\d]{10}$/
This doesnt seem to work. I would greatly appreciate your help.
9 characters requires 2 letters in the beginning i.e ab1234567 and 10 characters needs to have all digits i,e 1234567890. How do I do this using regex?
Here is what I have tried.
/^[a-zA-Z]{2}[\d]{7}|[\d]{10}$/
This doesnt seem to work. I would greatly appreciate your help.
Share Improve this question edited Jan 2, 2014 at 22:24 Sterling Archer 22.4k19 gold badges85 silver badges121 bronze badges asked Jan 2, 2014 at 22:23 NepCoderNepCoder 4394 silver badges18 bronze badges 2- could you show some examples for what should pass and what shouldn't? – Connor Commented Jan 2, 2014 at 22:27
- 2 @connor I don't think that's really necessary, given that the intent is clear as day. – Niet the Dark Absol Commented Jan 2, 2014 at 22:27
2 Answers
Reset to default 10The |
in your regex allows it to match either of these two possibilities:
^[a-zA-Z]{2}[\d]{7}
[\d]{10}$
That is, start of string then 2 letters and seven numbers followed by anything, or anything followed by 10 numbers and end of string. Try this:
/^([a-zA-Z]{2}\d{7}|\d{10})$/
(Note also that I've removed the []
from around each \d
- there's no point having a character class with only one character in it.)
The problem is that the ^
is only applying the first option, and the $
only applies to the second one.
Try this:
/^(?:[a-z]{2}\d{7}|\d{10})$/i