到目前为止我有^(\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 .
最佳答案
你也许可以使用这样的东西:
^(?:[<>]?=?\d+(?:\.\d+)?|\d+(?:\.\d+)?-\d+(?:\.\d+)?)$
我相信您已经知道如何锚定 ^
和$
工作。
(?: ... )
是非捕获组,与捕获组相同( ... )
只是它不会“保存”匹配的部分。与( ... )
相比,当您并不真正需要匹配的部件并且想要提高效率时,这特别有用。这需要一点开销来存储额外的数据。
[<>]?=?
用于潜在的比较器。
\d+(?:\.\d+)?
用于数字、整数或 float ,并确保不存在 123.
这样的东西或.123
因为我们正在使用 +
\d
上的量词.
因此,正则表达式匹配比较器后跟数字,或两个数字之间的减法:
\d+(?:\.\d+)?-\d+(?:\.\d+)?
+-----------+|+-----------+
1st num | 2nd num
minus sign
关于javascript - 尝试使用正则表达式来匹配范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20867532/