Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Python RegEx for all National Drug Codes (NDC 10 & 11) formats

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

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel


However, I’ve since learnt there are other formats and 11 digits:

  • 4-4-2
  • 5-3-2
  • 5-4-1
  • 5-4-2 (11 digits)

How can I write one RegEx for all these possibilities?

Issues:

  1. Optional 11th digit,
  2. Moving hyphen

>Solution :

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.
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading