正则表达式匹配数字与小数,有空格和没有空格

时间:2015-12-24 18:46:13

标签: regex

我正在寻找匹配一组数字的正则表达式字符串:

  1. 9.50(没有空格的数字,有2到4个小数点)
  2. 1 9。 5 0(带有2到4个小数点的空格的数字)
  3. 10(没有空格且没有小数点的数字)
  4. 到目前为止,我已经出现了正则表达式字符串[0-9\s\.]+,但这不是我想要的。那里有任何清洁解决方案吗?

    非常感谢

4 个答案:

答案 0 :(得分:2)

试试这个:

[\d\s]+(?:\.(?:\s*\d){2,4})?

这使小数点和后面的数字/空格可选。如果之后有数字,则会检查其中有2-4个数字{2,4}

DEMO

如果这只应匹配整个字符串,则可以锚定它。

^[\d\s]+(?:\.(?:\s*\d){2,4})?\s*$

答案 1 :(得分:1)

正则表达式的问题在于它也会匹配127.0.0.1,这是一个IP4地址,而不是数字。

以下正则表达式可以解决这个问题:

[0-9]+[0-9\s]*(\.(\s*[0-9]){2,4})?

我做出的假设:您需要至少放置一个数字(在逗号之前)。

regex101 demo

答案 2 :(得分:0)

(\d+[\d\s]*\.((\s*\d){2,4})?|\d+)

我仍然使用10

的第三个示例选择了“尾随空格”

这消除了他们。

答案 3 :(得分:0)

这还行不通-listAll()吗?

我完整的postgresql查询如下:

PanacheEntity

并执行以下操作:

  1. 该列中的值会将除数字,空格和点(十进制)以外的所有内容替换为空字符串。
  2. 使用'[^. 0-9]'分割这个新的char字符串,并调用所需结果列表中的哪个元素。

停留了一段时间。我希望这会有所帮助。