到目前为止,我有^(\d.*[.]?\d*)|([<>][=]?\d.*[.]?\d*)|(\d.*[.]?\d*[-]\d.*[.]?\d*)$
但我的测试得到了:
应该匹配:(全部都是)
>1
<9
>=99
<=123123.134
1-2
44.421-234.123
123
123.123
0.123
不匹配:(标有*的示例在不应该匹配的情况下匹配)
123. *
.123
=<123 *
=>234 *
sdf
sdf.sdf
123.sdf *
示例here。
答案 0 :(得分:3)
你可以使用这样的东西:
^(?:[<>]?=?\d+(?:\.\d+)?|\d+(?:\.\d+)?-\d+(?:\.\d+)?)$
我相信您已经知道主播^
和$
如何运作。
(?: ... )
是一个非捕获组,它与捕获组( ... )
相同,只是它没有“保存”匹配的部分。当与( ... )
相比时,如果你真的不需要匹配的部分并且想要提高效率,这会特别有用,这需要一点点开销来存储额外的数据。
[<>]?=?
适用于潜在的比较器。
\d+(?:\.\d+)?
用于数字,整数或浮动,并确保不存在123.
或.123
这样的内容,因为我们在+
上使用\d
量词{1}}。
因此正则表达式匹配比较器后跟一个数字,或两个数字之间的减法:
\d+(?:\.\d+)?-\d+(?:\.\d+)?
+-----------+|+-----------+
1st num | 2nd num
minus sign
答案 1 :(得分:0)
您可以使用:
^(?:[<>]=?|\d+(?:.\d+)?-)?\d+(?:.\d+)?$