Need a regular expression - disallow all zeros

I want to validate a string to meet the following conditions:

  • Must be 6 characters long
  • Only the first character can be alpha-numeric the rest must be numeric
  • If first digit is alpha, it must be caps
  • Can't be all zeros

I have the following regular expression that gets everything except the all zeros part. Is there a way to disallow all zeros?

^[A-Z0-9][0-9]{5}$

Is the only way to do this to check the regex (and allow "000000") but then check specifically that it's not "000000"?

Thanks.


Just have a negative lookahead like this to disallow all 0s:

/^(?!0{6})[A-Z0-9][0-9]{5}$/

You can use a (?!0+$) negative lookahead to avoid matching a string that only contains 1 or more zeros:

/^(?!0+$)[A-Z0-9][0-9]{5}$/
  ^^^^^^^

See the regex demo. This approach lets you just copy/paste the lookahead after ^ and not worry about how many chars the consuming part matches.

Details

  • ^ - start of a string
  • (?!0+$) - a negative lookahead that fails the match if there are 1 or more 0 chars up to the end of the string ($)
  • [A-Z0-9] - an uppercase ASCII letter or a digit
  • [0-9]{5} - five digits
  • $ - end of string.

I would do two passes. One with your first regex, and one with a new regex looking for all zeros.


What if you checked for the all zeros case first and then, after determining that it's no all zeros apply your regex?

if ( NOT ALL ZEROS)
    APPLY REGEX