c# - "00000000000000000000000000000" matches Regex "^[1-9]|0$" -
in .net4.5, find result of
system.text.regularexpressions.regex.ismatch( "00000000000000000000000000000", "^[1-9]|0$") is true.
the result expect false. don't know why. can me?
update: in beginning, validating regular expression ^-?[1-9]\d*|0$ used match integer found on internet , find string multiple 0 matches regular expression.
the issue alternator's binding behavior. default (i.e. without using grouping), expression containing alternator (|) match either value left of alternator, or value right.
so in expression, you're matching either 1 of these:
^[1-9]0$
your call ismatch method returns true because second of 2 option matches string 00000000000000000000000000000.
to restrict alternator's binding specific part of expression, need group using parentheses, follows:
^([1-9]|0)$ putting together, strict expression validate integers, disallowing leading zeroes , negative zero, this:
^(-?[1-9][0-9]*|0)$
Comments
Post a Comment