问题
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
回答1:
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 string
You 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.
回答2:
You can try this DEMO LINK HERE
^(([a-zA-Z]{2}|[0-9]{2})[0-9]{6})?$
It will accept:
- ab123456
- 12345678
- aa441236
- aw222222
来源:https://stackoverflow.com/questions/39613091/regular-expression-match-either-of-two-conditions