在Java中,我目前正在使用
str.matches("\\d")
但它只匹配一个数字。
我需要匹配整数和双精度数,例如:
"1"
"1337"
".1"
"13.7"
任何帮助都会很棒。
答案 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。
的部分