【问题标题】:Need a quick regex for a numeric range between 2000 to 9999 [closed]需要一个 2000 到 9999 之间数字范围的快速正则表达式 [关闭]
【发布时间】:2012-12-12 04:06:37
【问题描述】:

我不擅长正则表达式,不确定如何处理这个数字范围。

编辑:抱歉含糊不清,我需要检查输入的字符串是否在数字范围 2000 到 9999 之间,它之前或之后都不会有任何数字。

【问题讨论】:

  • 我在 RegEx 方面也很糟糕,但在来这里之前我试了一下。在这里试试:regular-expressions.info Stack Overflow 不是让人们为你工作的地方,而是为你正在做的工作寻求帮助。
  • 虽然您可以将其作为正则表达式执行,但解析数字并检查它是否在 2000 和 9999 之间可能会更清楚,除非您希望像 02000 这样的数字不匹配。
  • @Pete 感谢您的链接,看起来很有帮助。
  • @PeterLawrey 对不起,我很笨,解析数字是什么意思?你的意思是使用 Integer.parseInt 看看它是否有效?

标签: java regex range numeric


【解决方案1】:

作为正则表达式,您可以编写

[2-9][0-9][0-9][0-9]

[2-9][0-9]{3}

[2-9]\d{3}

[2-9]\p{Digit}{3}

这将为您提供 2000 到 9999 之间的所有数字,假设它们没有前导零。即 002000 或 +2000 将不匹配。

我会做的是

int i = Integer.parseInt(text);
if (2000 <= i && i <= 9999) 
   // ok.

【讨论】:

  • 短版[2-9][0-9]{3}
  • 谢谢,我应该使用 ^[2-9][0-9]{3}$,因为数字之前或之后没有任何东西?
  • 如果你使用匹配器,无论如何它都会这样做。也就是说,这取决于正则表达式的使用方式。
猜你喜欢
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多