正则表达式,匹配数字与连字符和没有

时间:2016-07-14 15:13:39

标签: regex

我有这个字符串[lat:50.000],我需要从中获取数字,但有时它的前面可能有一个连字符,因为它可能是一个减号。

我现在有这个正则表达式[\-]\d+(\.\d{1,10})?然而它只会匹配数字,如果它在前面有连字符,我需要一个正则表达式,它将匹配和没有连字符。所以我会留下50.000或某些情况-2.000

希望这是有道理的。

5 个答案:

答案 0 :(得分:2)

您需要一个量词来表明连字符是可选的:

[\-]?\d+(\.\d{1,10})?

您还可以稍微改进表达式并将连字符从字符类中删除(因为它只是一个字符):

-?\d+(\.\d{1,10})?

答案 1 :(得分:1)

使用此正则表达式:\-?\d+\.\d{1,10}

答案 2 :(得分:1)

字符或组后面的question mark quantifier ?表示它是可选的:

-?\d+(\.\d{1,10})?

这相当于使用{0,1}量词。

答案 3 :(得分:1)

还有一个:

(-?\d[\d.,]+)
# - or not (optional)
# followed by at least a digit
# followed by digits, dots and commas

请参阅a demo on regex101.com

答案 4 :(得分:0)

这是一个简单的表达式

\-?\d*\.?\d*