Regex: how to only allow integers greater than zero

后端 未结 6 988
失恋的感觉
失恋的感觉 2021-01-20 00:42

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 ad

相关标签:
6条回答
  • 2021-01-20 00:42
    ^(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.

    0 讨论(0)
  • 2021-01-20 00:53

    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]*$
    
    0 讨论(0)
  • 2021-01-20 00:53

    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 讨论(0)
  • 2021-01-20 01:01

    Code:

    ^([1-9][0-9]+|[1-9])$
    

    Example: http://regexr.com/3annd

    Tested with:

    0
    10
    01
    11
    00
    1
    100
    
    0 讨论(0)
  • 2021-01-20 01:06

    A minor variation is this:

    /\d*[1-9]\d*/
    

    That would allow leading zeros.

    0 讨论(0)
  • 2021-01-20 01:09
    ^(\d{2}[1-9])$
    

    matches with: from 001 to 999 example 001 099 999

    does not match 000 01 0

    0 讨论(0)
提交回复
热议问题