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 more0
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