正则表达式匹配非负数,没有前导零,2位小数,至少1位数,可选小数

时间:2017-01-13 01:54:44

标签: regex

this question相同,但我不希望允许正确的分数(即数字小于1,如0.45)。

我有这个,这似乎有效,但可以改进吗?

INSERT INTO Panels
    (FloorID
    ,PanelName
    ,PanelDescription)
SELECT
    M.NewFloorID
    ,Panels.PanelName
    ,Panels.PanelDescription
FROM
    Panels
    INNER JOIN Floors ON Floors.FloorID = Panels.FloorID
    INNER JOIN Elevations ON Elevations.ElevationID = Floors.ElevationID
    INNER JOIN @MapFloors AS M ON M.OldFloorID = Floors.FloorID
WHERE Elevations.BlockID = @blockToCopy
;

These tests似乎证实它有效,但我对正则表达式有点生疏,所以即使单元测试也不完全相信!

我认为我正在寻找> = 1的整数或小数。

道歉但似乎我链接的12个单元测试被删除了:(

1 个答案:

答案 0 :(得分:1)

我相信^[1-9]\d*(?:\.\d{1,2})?$完成工作

请参阅https://regex101.com/r/Z1CaJq/1上的测试 (测试使用3位小数,但想法仍然存在)

简要说明:对于任何大于或等于1的数字,它将以非零数字开头,后跟任意数字。

^                           Start of line
 [1-9]                      non-zero number
      \d*                   any number of digits
         (?:         )?     non-capturing group, which is optional
            \.\d{1,2}       a dot, then 1-2 digits
                       $    end of line