java - 正则表达式验证数字管道
问题描述
我需要一个可以验证以下内容的正则表达式:
验证没有空值或空格
123|2.3|3.6
验证没有一个数字是负数
123|0.0|2.3
验证每个数字不超过 9 位,不计算小数点后的数字
123|333333333.32|3.4
这是我的尝试:
^(?:[^|]+(?:\|[^|]+){0,2})?$
解决方案
我想出了这个:
^(\d{1,9}(?:\.\d+)?)\|(\d{1,9}(?:\.\d+)?)\|(\d{1,9}(?:\.\d+)?)$
第一个数字:
(\d{1,9}(?:\.\d+)?)
\d{1,9}
表示 1 位和最多 9 位数字。(?:\.\d+)?
表示可能的小数点和其后的一位或多位数字。
对于后续数字\|
表示管道,之后我包含与第一个数字相同的正则表达式(\d{1,9}(?:\.\d+)?)
我封装了每个数字,()
使每个数字成为一个捕获组。如果您不需要捕获数字而只需要验证,这个也可以:
^\d{1,9}(?:\.\d+)?(?:\|\d{1,9}(?:\.\d+)?){2}$
推荐阅读
- machine-learning - 针对类不平衡结合重采样和特定算法
- swift - 项目 Flutter 中的错误导入框架 ios(使用 Firebase Carthage)
- java - 使用 JAVA 多行输出作为 shell 脚本中的变量
- delphi - Delphi XE8 TBindSourceDB 组件使用 MasterSource
- node.js - puppeteer/playwright:如何获得授权:承载令牌并传递给请求(例如 axios)?
- javascript - 如何忽略 contentEditable 中的 shift 键?
- java - 将以前的日期与更新日期进行比较的方法?
- python - xarray:从*本地*每月平均值计算每日异常的时间序列
- jira - Jira JQL:如何找到某个队列的最忙时间?
- python - 使用 Dash-Cytoscape 更改单个节点的大小