Goal: RegEx to fit many posible NDC 10 & 11 formats.
I've made a great start... NDC 10:
^[0-9][0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]\-[0-9][0-9]$
e.g. 1234-1234-12
Reference
However, I've since learnt there are other formats and 11 digits:
How can I write one RegEx for all these possibilities?
Issues:
You can use
^(?:\d{4}-\d{4}-\d{2}|\d{5}-(?:\d{3}-\d{2}|\d{4}-\d{1,2}))$
See the regex demo. Details:
^
- start of string(?:
- start of the first non-capturing group:
\d{4}-\d{4}-\d{2}
- four digits, -
, four digits, -
, two digits|
- or\d{5}-
- five digits, -
(?:
- start of the second non-capturing group:
\d{3}-\d{2}
- three digits, -
, two digits|
- or\d{4}-\d{1,2}
- four digits, -
and one or two digits)
- end of the second non-capturing group)
- end of the first non-capturing group.$
- end of string.