Regex for Passport Number

Dinny picture Dinny · Nov 17, 2016 · Viewed 18.8k times · Source

I am trying to implement regex validation for passport number.

My requirement is

  1. Length should be minimum 3 characters to a maximum of 20 characters.
  2. Should not be only 0's

I tried with the below regular expression

^(?!0{3,20})[a-zA-Z0-9]{3,20}$

This seems to work for most of the cases, but incase my text contains 3 or more leading zeros, it seems to fail. Such as '00000001'.

Example Matches

  • 101AE24 - Working as expected
  • 00 - Not working as expected
  • 01234 - Working as expected
  • 00001 - Not working (But it should also be match)

Any help would be much appreciated.

Answer

Rob picture Rob · Nov 17, 2016

What about this?

^(?!^0+$)[a-zA-Z0-9]{3,20}$

Instead of saying 'reject values with 3-20 zeros', we can just say 'reject anything that only contains zeros (regardless of the length, since <3 and >20 fail anyway)