如何编写用于捕获十进制数的正则表达式?

时间:2011-05-18 03:13:11

标签: regex

我需要编写一个正则表达式来捕获示例文本中的所有以下数字:

2.5
5
0.2
.5

假设小数点两边不会超过2位数,我使用什么正则表达式?

感谢。

3 个答案:

答案 0 :(得分:13)

这应该有用。

(\d*\.?\d+)

这意味着

  • (开始捕获群组
  • \d*任意数字零次或多次
  • \.?期间为零或一次(即可选)
  • \d+任何数字一次或多次
  • )结束捕获组

它将匹配您列出的所有号码,并在$1中捕获它们。

答案 1 :(得分:8)

这个正则表达式将完成这项工作(即小数点两边不超过2位)

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

<强>解释

^               # Begining of the string
  (?:           # begining of NON capture group
    \d{0,2}     # matches 0,1 or 2 digits
    \.          # decimal point
    \d{1,2}     # 1 or 2 digits
  )             # end of non capture group
$               # end of string

|               # OR

^               # Begining of the string
  \d{1,2}     # 1 or 2 digits
$               # end of string

此正则表达式将匹配: 2.5, 5, 0.2, .5 但不是: 123.456, 256

答案 2 :(得分:5)