javascript - 正则表达式验证非零数
问题描述
我的要求是验证一个非零数字。我使用的正则表达式如下。
^[1-9]?\d+(\.\d)?\d*$
有效值应该是
- 2
- 22
- 2222(最多任意位数)
- 2.2222(最多小数点数)
无效值
- 0
- (。没有十进制值)
- 0.1(任何小数位数,但起始位为 0)
- 2.4.5(不止一个。)
基本上任何以 0 开头或具有多个 1 的值。或 时不提供小数点。添加,不正确。
解决方案
^[1-9]\d*(?:\.\d+)?$
https://regex101.com/r/wHZUoW/1
- 由于您不希望数字以 开头0
,因此您不应[1-9]
将开头的数字设为可选?
。
- 作为一般的良好做法,使用非捕获组(?: ... )
而不是捕获组,因为以后不需要引用内容。
推荐阅读
- node.js - knex.js - 动态模式名称迁移失败
- java - 在两个模块中包含相同的 jar 会引发构建错误
- swift - 如何修复调用中参数“完成”的缺失参数(MapBox 场景工具包)
- c - OpenSSL 更新到较新版本:已弃用的 `OPENSSL_config` 的替代方案
- javascript - 如何读取 Github 存储库中的 .yaml 文件并将内容发布到 Github 页面
- java - 修改列表 - 流方法
- unit-testing - 为什么 VueX 存储在多个单元测试中保留状态?
- python - 是否有简单的 xpath 来查找 xml 结构中的所有父元素?
- linux - 什么会破坏 /proc/self/exe?
- excel - 如何在两个不同的列中比较基于年份的日期