regex - 正则表达式匹配至少 6 位数字,最多只有 3 位数字不同于 0
问题描述
编辑
我需要识别至少 6 位和最多 25 位的所有数字,其中只有 1 到 3 位不同于 0。
示例:000123、0103040000、10320000、70000000、12000009000
我正在尝试这样的事情:
regexp_like(number, '[1-9]\d{1,3}') AND regexp_like(number,'(0){5,24}')
(可以使用多个正则表达式)
但这也匹配以下数字:
0046700000031,00394000007 - 这不应该匹配,因为它们有 4 位不是 0,它必须匹配最少 1 位不是 0 和最多 3 位不是 0 的数字
我正在使用 Oracle 12C。
解决方案
这是我发现的另一种选择,它似乎有效,但我认为只在 Oracle 中有效。
SELECT NUMBER
FROM TABLE t
WHERE LENGTH(NUMBER) > 5 HAVING(regexp_count(NUMBER, '0') > 2
AND regexp_count(NUMBER, '[1-9]') BETWEEN 1 AND 3)
GROUP BY NUMBER
谢谢
解决方案
试试这个模式(?=^([123456789]*0){1,3}[123456789]*$)\d{6,25}
。
解释:它使用前瞻来验证后面的内容最多包含三个零,模式为:(?=^([123456789]*0){1,3}[123456789]*$)
。
推荐阅读
- image - 如何在没有 go-flutter 的情况下在 Flutter 桌面中使用 image_picker 插件
- vba - PowerPoint VBA:如何将每张幻灯片单独保存为新演示文稿?
- salesforce - 如何使用设计属性从社区中的静态资源中提供图像路径
- android - 如何动态包含合并布局?
- amazon-web-services - 使用 Packer 构建时的身份验证错误
- r - 从雅虎财经中提取数据
- powershell - 仅在脚本第一次运行时发生异常
- gtk - 是否可以在不使用 GObject 样式构造的情况下扩展基本 Gtk 小部件?
- ios - UITabBar 奇怪的行为首先在模拟器中初始化
- python - 纸浆能否以最低限度管理约束?