与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个单元测试被删除了:(
答案 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