I have tried the following to only allow integers in my text box, this works great but it allows a zero in there. Is there anything else I can add to prevent a zero being added?
\d+
This will allow 10 but not 01, and it will allow only numbers consisting of digits, i.e., no periods or minus signs...but also no plus signs, scientific notation etc.
^[1-9][0-9]*$
A minor variation is this:
/\d*[1-9]\d*/
That would allow leading zeros.
If you are not concerned about negatives and silly numbers like 07
, this will do:
/[1-9]\d*/
For a more robust solution, I suggest converting the matched string to integer and check if it fulfills your criteria.
^(0*[1-9][0-9]*)$
This will allow "silly" numbers like 007 as well, but not 0 or 000 or an empty string.
Note that \d
matches also digits from other character sets like ٠١٢٣٤٥٦٧٨٩
. See: \d is less efficient than [0-9].
^
denotes the start, $
the end of the string. Together they ensure that the whole string is matched.
^(\d{2}[1-9])$
matches with: from 001 to 999 example 001 099 999
does not match 000 01 0