与数字匹配的正则表达式

时间:2017-03-28 06:55:14

标签: regex

如何改进此正则表达式?

{{1}}

我只想识别字符串中的数字。数字必须没有任何内容,或者如果有数字必须按三个一组分组,但必须作为整数。数字可以从空格开始,也可以在行的开头处,并且可以以空格或行尾结束。

目前,如果字符串以空格开头,则只能找到空格。

3 个答案:

答案 0 :(得分:1)

您可以使用

(?<![\d.])

请参阅regex demo

<强>详情:

  • \b - 当前位置前不应有数字或点
  • (?:\d{1,3}(?:\.\d{3})*|\d+) - 一个前导词边界,在当前位置之前必须有字符串的开头或非字的字符
  • \d{1,3}(?:\.\d{3})* - 2个替代方案中的1个:
    • . - 1到3位数后跟零个或多个|和3位数的序列
    • \d+ - 或
    • \b - 一个或多个数字
  • (?!\.\d) - 尾随字边界
  • {{1}} - 当前位置后不得有任何点和数字。

答案 1 :(得分:0)

这样的事情

((\s\d+\s)|(\s*\d{1,3}(\.\d{3})+\s*))

第一部分(\s\d+\s)匹配独奏数字,第二部分(\s*\d{3}\.\d{3}\s*)匹配数字与点和三个组。

我认为你不需要在RegEx中声明一行的开头或结尾

编辑:

可能更容易

(\s*\d(\.\d{3})*\s*)

您要查找一个数字,并选择一些.\d\d\d

答案 2 :(得分:0)

尝试这种模式

[0-9]+\.{1}[0-9]*