javascript - 连字符分隔的浮点数的正则表达式
问题描述
在设计正则表达式以验证 Javascript 中连字符分隔的浮点数时需要一些帮助。到目前为止,我已经设法实现了这个 RegEx:
(^((\\d)+(\.[0-9]+)?)(\-)?((\\d)+(\.[0-9]+)?)$)|^(\\d+)$
它匹配以下内容:
1) 2
2) 2.10
3) 3.10-3.14
这个问题是它也匹配“3.103.310”,这是错误的数字。非常感谢解决此问题的任何帮助。
解决方案
问题来自第一个替代方案,它将 1 个或多个数字与可选的小数部分 ( (\d)+(\.[0-9]+)?
) 匹配,然后匹配连字符,再匹配 1+ 个数字,再匹配可选的小数部分。因此,允许 2 个点。
您可以像这样修复模式:
^\d+(?:\.\d+)?(?:-\d+(?:\.\d+)?)*$
查看正则表达式演示
细节
^
- 字符串的开始\d+
- 1+ 位数(?:\.\d+)?
- 一个可选的非捕获组:\.
- 一个点\d+
- 1+ 位数
(?:-\d+(?:\.\d+)?)*
- 匹配 0+ 次出现的非捕获组-
- 一个连字符\d+(?:\.\d+)?
- 1+ 位和 1 或 0 次出现.
和 1+ 位
$
- 字符串结束
推荐阅读
- python-3.x - “list = [1] + [0] * n”有什么作用
- python - azure function service bus python - 读取一堆消息
- cmd - Python-Nuitka 无法使用我设置的图标将 .py 编译为 .exe
- java - selenium NullPointerException 解决方案的驱动程序
- python - Python - 具有多个数组的多线程将参数传递给函数
- pine-script - 如何在 pine 脚本中按值浮点(值)和另一个字符串(键)数组对数组进行排序?
- c++ - 将静态成员函数与 pthread_create() 一起使用有什么含义?
- r - 如何将额外文件添加到 pkgdown 站点?
- reactjs - React:在回调中设置功能组件的状态
- java - 使用嵌套键的杰克逊多态性