javascript - 尝试使用正则表达式来匹配范围

标签 javascript regex

到目前为止我有^(\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

regex101 demo

关于javascript - 尝试使用正则表达式来匹配范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20867532/

相关文章:

javascript - 带有下拉菜单效果的单按钮 - 帮助优化

javascript - 为什么这个 replace() 不替换 "my"?

javascript - 突然出现Uncaught Type Error,location.reload没有方法 "apply"

javascript - 在复选框上单击动态显示隐藏具有相同类的 div

c - 从C中的字符串中提取url

regex - 以特定的命名模式为所有类添加接口(interface)

javascript - 将字节数组写入文件 JavaScript

regex - Vim:在光标处测试模式的最有效方法?

regex - 确定正则表达式中存在哪些命名捕获?

regex - 如何在 bash 中执行简单的正则表达式匹配?