正则表达式匹配这些数字规则

时间:2012-02-24 18:38:51

标签: java regex

在Java中,我目前正在使用

str.matches("\\d")

但它只匹配一个数字。

我需要匹配整数和双精度数,例如:

"1"
"1337"
".1"
"13.7"

任何帮助都会很棒。

6 个答案:

答案 0 :(得分:5)

你可以试试这个正则表达式:

 ^(\d+(\.\d+)?|\.\d+)$

答案 1 :(得分:5)

我认为这个正则表达式可以帮助你

\\d*\\.?\\d+

答案 2 :(得分:2)

((\+|-)?(\d+(\.\d+)?|\.\d+))

这将匹配正负的整数,以数字开头的双精度数,以点开头的双精算数

答案 3 :(得分:1)

我认为这比其他建议看起来更整洁,同时仍然做同样的事情。

(\\d+)?(\\.)?\\d+

答案 4 :(得分:1)

这将匹配Java编译器将识别的任何实数。为此,它还处理签名数字和指数等内容。它处于Pattern.COMMENTS模式,因为我认为其他任何事情都是野蛮的。

(?xi)                      # the /i is for the exponent
(?:[+-]?)                  # the sign is optional
(?:(?=[.]?[0123456789])
   (?:[0123456789]*)
   (?:(?:[.])
      (?:[0123456789]{0,})
   ) ?
)
# this is where the exponent starts, if you want it
(?:(?:[E])
   (?:(?:[+-]?)
      (?:[0123456789]+)
   ) 
   |
)

答案 5 :(得分:-1)

有一个非常广泛的lesson about regular expressions in the Java Tutorials

有关匹配多个字符的信息,请阅读有关quantifiers

的部分