不以点开头的数字的正则表达式

时间:2014-12-07 16:36:44

标签: regex

我正在搜索一个正则表达式,该正则表达式只匹配不以'开头的数字。'

例如:

  

.5 不行

     
      
  1. 确定
  2.         

    4 确定

         

    3.0 确定

         

    6.45 确定

2 个答案:

答案 0 :(得分:2)

您可以使用此模式:

^[0-9]+\.?[0-9]*$

此模式旨在检查字段,因此它使用锚点^$。如果可用,最好将其替换为\A\z,因为$也可能匹配最后一行的结尾,后跟最后一个换行符,并且出于语义原因。

如果您需要在更大的字符串中找到这些数字,则需要用其他内容替换锚点:

使用lookarounds(如果它们在您的正则表达式中可用):

(?<![0-9.])[0-9]+\.?[0-9]*(?![0-9.])

在捕获组的帮助下(如果没有):

(?:^|[^0-9.])([0-9]+\.?[0-9]*)(?:$|[^0-9.])

(然后你需要提取捕获组1的内容以获得数字)

注意:您可以用基本语法编写最后一个模式(例如,与sed一起使用):

\(^\|[^0-9.]\)\([0-9][0-9]*\.\?[0-9]*\)\($\|[^0-9.]\)

答案 1 :(得分:0)

^\d+(?:\.\d*)?$

试试这个。看看演示。

https://regex101.com/r/aQ3zJ3/8