Regular Expression - Two Digit Range (23-79)?

前端 未结 5 1212
天涯浪人
天涯浪人 2021-02-15 18:31

I have been reading the regex questions on this site but my issue seems to be a bit different. I need to match a 2 digit number, such as 23 through 75. I am doing this on an H

相关标签:
5条回答
  • 2021-02-15 18:45

    Since you're not indicating whether this is in addition to any other characters (or in the middle of a larger string), I've included the logic here to indicate what you would need to match the number portion of a string. This should get you there. We're creating a range for the second numbers we're looking for only allowing those characters. Then we're comparing it to the other ranges as an or:

    (2[3456789]|[3456][0-9]|7[012345])
    

    As oded noted you can do this as well since sub ranges are also accepted (depends on the implementation of REGEX in the application you're using):

    (2[3-9]|[3-6][0-9]|7[0-5])
    

    Based on the title you would change the last 5 to a 9 to go from 75-79:

    (2[3-9]|[3-6][0-9]|7[0-9])
    

    If you are trying to match these numbers specifically as a string (from start to end) then you would use the modifiers ^ and $ to indicate the beginning and end of the string.

    There is an excellent technical reference of Regex ranges here:

    http://www.regular-expressions.info/numericranges.html

    If you're using something like grep and trying to match lines that contain the number with other content then you might do something like this for ranges thru 79:

    grep "[^0-9]?(2[3-9]|[3-6][0-9]|7[0-9])[^0-9]?" folder
    
    0 讨论(0)
  • 2021-02-15 19:00

    If I want 2 digit range 0-63

    /^[0-9]|[0-5][0-9]|6[0-3]$/
    
    1. [0-9] will allow single digit from 0 to 9
    2. [0-5][0-9] will allow from 00 to 59
    3. 6[0-3] will allow from 60 till 63

    This way you can take Regular Expression for any Two Digit Range

    0 讨论(0)
  • 2021-02-15 19:01

    This tool is exactly what you need: Regex_For_Range

    From 29 to 79: \b(2[3-9]|[3-7][0-9])\b

    From 29 to 75: \b(29|[3-6][0-9]|7[0-5])\b

    And just for fun, from 192 to 1742: \b(19[2-9]|[2-9][0-9]{2}|1[0-6][0-9]{2}|17[0-3][0-9]|174[0-2])\b :)

    0 讨论(0)
  • 2021-02-15 19:03

    This should do it:

    /^([2][3-9]|[3-6][0-9]|[7][0-5])$/
    

    ^ and $ will make it strict that it will match only 2 numbers, so in case that you have i.e 234 it won't work.

    0 讨论(0)
  • 2021-02-15 19:08

    You have two classes of numbers you want to match:

    • the digit 2, followed by one of the digits between 3 and 9
    • one of the digits between 3 and 7, followed by any digit

    Edit: Well, that's the title's range (23-79). Within your question (23-75), you have three:

    • the digit 2, followed by one of the digits between 3 and 9
    • one of the digits between 3 and 6, followed by any digit
    • the digit 7, followed by one of the digits between 0 and 5
    0 讨论(0)
提交回复
热议问题