Hi I don't know much about regular expression. But I need it in form validation using angularJs.
Below is the requirement
The input box should accept only if either
(1) first 2 letters alpha + 6 numeric
or
(2) 8 numeric
Below are some correct Inputs :-
(1)SH123456 (2)12345678 (3)sd456565
I tried data-ng-pattern="/(^([a-zA-Z]){2}([0-9]){6})|([0-9]*)?$/"
, Its working fine for both the above condition but still it is accepting strings like S2D3E4F5 and may be many other combination as well.
What I am doing wrong I am not able to find it out.
Any help is appreciable !!!
Thanks
In your regex, the two alternative branches are anchored separately:
(^([a-zA-Z]){2}([0-9]){6})
- 2 letters and 6 digits at the start of the string|
- or([0-9]*)?$
- optional zero or more digits at the end of the stringYou need to adjust the boundaries of the group:
data-ng-pattern="/^([a-zA-Z]{2}[0-9]{6}|[0-9]{8})?$/"
^ ^^^^
See the regex demo.
Now, the pattern will match:
^
- start of string(
- start of the grouping:
[a-zA-Z]{2}[0-9]{6}
- 2 letters and 6 digits|
- or[0-9]{8}
- 8 digits)?
- end of the grouping and ?
quantifier makes it match 1 or 0 times (optional)$
- end of string.