正则表达式捕获无空格数字的需求及问题咨询
正则表达式解决方案
需求回顾
需要捕获整行符合以下要求的数字:
- 仅包含数字、点号,允许点号前后存在空格
- 禁止出现多个独立数字被空格分隔的情况(如
1 1.1这类包含多数字的行需排除) - 整行不能有数字、点号、空格之外的其他字符
修正后的正则表达式
^(\s*\d+\s*(?:\.\s*\d+)?|\s*\.\s*\d+)$
正则说明
^和$:严格匹配整行的开头与结尾,避免仅匹配行内部分内容- 捕获分组包含两种合法数字结构:
\s*\d+\s*(?:\.\s*\d+)?:覆盖整数(如1、5)、带小数点的数字(如1.1、5 .5),允许数字和小数点前后有任意空格\s*\.\s*\d+:覆盖以小数点开头的数字(如.5、. 8)
测试用例验证
| 测试项 | 匹配结果 |
|---|---|
| 1 | 匹配(捕获1) |
| 1 1.1 | 不匹配(多数字被空格分隔) |
| 5655 8 888 8888 888888 8 | 不匹配(多数字被空格分隔) |
| 1 5.15 | 不匹配(多数字被空格分隔) |
| 1.1 | 匹配(捕获1.1) |
| 5 .5 | 匹配(捕获5 .5) |
| 5 | 匹配(捕获5) |
内容的提问来源于stack exchange,提问作者TomTomTom
相关产品推荐
相关产品推荐

