0

我是一个新用户,所以请原谅这个问题是否应该在它的原始帖子中回答: regex match numbers greater or equal than 20, by increments of 5, range 20 to 999

Neverteless,这是当前的问题:

  • 匹配所有等于或大于 20 的数字(无上限)
  • 增量为 5
  • 没有小数点
  • 不应允许前导零

在另一篇文章中使用stackoverflow 用户 YMI响应:

(\d{2}|[2-9])[05]

用户 nhahtdh

^([2-9]|[1-9]\d)[05]$

但是,我想探索没有上限和前导零也不允许的选项。

4

1 回答 1

0

nhahtdh我的答案与's非常相似,但请注意,\d+而不是 a\d对字符数没有上限。

你会想要一个这样的正则表达式:

\b((?:[23456789]|[123456789]\d+)[05])\b

[现场示例]

快速解释这里发生的事情:

  • \b匹配边界,如空格或符号,因此\bs 将从文本中找到完整的单词
  • 接下来我们为单词前缀提供两个选项,它可以是单个数字 2 或更大:[23456789]
  • 或者它可以是 2 个或更多不以 0 开头的数字:[123456789]\d+
  • 对于我们的后缀,我们要求它是 5 的倍数:[05]

正则表达式可视化


顺便说一句,您可以通过简单地消耗 0 然后匹配数字来匹配满足其他条件但也具有前导 0 的数字,注意添加0*将匹配任意数量的前导 0:

\b0*((?:[23456789]|\d{2,})[05])\b
于 2015-11-12T12:06:04.313 回答