RegEx: How can I match all numbers greater than 49?

前端 未结 6 759
孤独总比滥情好
孤独总比滥情好 2020-11-29 21:11

I\'m somewhat new to regular expressions and am writing validation for a quantity field where regular expressions need to be used.

How can I match a

相关标签:
6条回答
  • 2020-11-29 21:26

    I know there is already a good answer posted, but it won't allow leading zeros. And I don't have enough reputation to leave a comment, so... Here's my solution allowing leading zeros:

    First I match the numbers 50 through 99 (with possible leading zeros):

    0*[5-9]\d
    

    Then match numbers of 100 and above (also with leading zeros):

    0*[1-9]\d{2,}
    

    Add them together with an "or" and wrap it up to match the whole sentence:

    ^0*([1-9]\d{2,}|[5-9]\d)$
    

    That's it!

    0 讨论(0)
  • 2020-11-29 21:26

    Try this regex:

    [5-9]\d+|\d{3,}
    
    0 讨论(0)
  • 2020-11-29 21:29

    Next matches all greater or equal to 11100:

    ^([1-9][1-9][1-9]\d{2}\d*|[1-9][2-9]\d{3}\d*|[2-9]\d{4}\d*|\d{6}\d*)$
    

    For greater or equal 50:

    ^([5-9]\d{1}\d*|\d{3}\d*)$
    

    See pattern and modify to any number. Also it would be great to find some recursive forward/backward operators for large numbers.

    0 讨论(0)
  • 2020-11-29 21:34

    The fact that the first digit has to be in the range 5-9 only applies in case of two digits. So, check for that in the case of 2 digits, and allow any more digits directly:

    ^([5-9]\d|\d{3,})$
    

    This regexp has beginning/ending anchors to make sure you're checking all digits, and the string actually represents a number. The | means "or", so either [5-9]\d or any number with 3 or more digits. \d is simply a shortcut for [0-9].

    Edit: To disallow numbers like 001:

    ^([5-9]\d|[1-9]\d{2,})$
    

    This forces the first digit to be not a zero in the case of 3 or more digits.

    0 讨论(0)
  • 2020-11-29 21:40

    I know this is old, but none of these expressions worked for me (maybe it's because I'm on PHP). The following expression worked fine to validate that a number is higher than 49:

    /([5-9][0-9])|([1-9]\d{3}\d*)/
    
    0 讨论(0)
  • 2020-11-29 21:44

    Try a conditional group matching 50-99 or any string of three or more digits:

    var r = /^(?:[5-9]\d|\d{3,})$/
    
    0 讨论(0)
提交回复
热议问题