Regex to match 2 digits, optional decimal, two digits

后端 未结 11 1334
时光取名叫无心
时光取名叫无心 2020-11-30 09:29

I\'ve spent half an hour trying to get this, maybe someone can come up with it quickly.

I need a regular expression that will match one or two digits, followed by an

相关标签:
11条回答
  • 2020-11-30 10:01
      \d{1,}(\.\d{1,2})|\d{0,9}
    

    tested in https://regexr.com/

    matches with numbers with 2 decimals or just one, or numbers without decimals.

    You can change the number or decimals you want by changing the number 2

    0 讨论(0)
  • 2020-11-30 10:06
    (?<![\d.])(\d{1,2}|\d{0,2}\.\d{1,2})?(?![\d.])
    

    Matches:

    • Your examples
    • 33.

    Does not match:

    • 333.33
    • 33.333
    0 讨论(0)
  • 2020-11-30 10:07

    You mentioned that you want the regex to match each of those strings, yet you previously mention that the is 1-2 digits before the decimal?

    This will match 1-2 digits followed by a possible decimal, followed by another 1-2 digits but FAIL on your example of .33

    \d{1,2}\.?\d{1,2}
    

    This will match 0-2 digits followed by a possible deciaml, followed by another 1-2 digits and match on your example of .33

    \d{0,2}\.?\d{1,2}
    

    Not sure exactly which one you're looking for.

    0 讨论(0)
  • 2020-11-30 10:08

    To build on Lee's answer, you need to anchor the expression to satisfy the requirement of not having more than 2 numbers before the decimal.

    If each number is a separate string, you can use the string anchors:

    ^\d{0,2}(\.\d{1,2})?$
    

    If each number is within a string, you can use the word anchors:

    \b\d{0,2}(\.\d{1,2})?\b
    
    0 讨论(0)
  • 2020-11-30 10:08
    ^\d{0,2}\.?\d{1,2}$
    
    0 讨论(0)
  • 2020-11-30 10:10
    ^(\d{0,2}\\.)?\d{1,2}$
    

    \d{1,2}$ matches a 1-2 digit number with nothing after it (3, 33, etc.), (\d{0,2}\.)? matches optionally a number 0-2 digits long followed by a period (3., 44., ., etc.). Put them together and you've got your regex.

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