RegEx数字检查

时间:2009-03-25 12:27:31

标签: regex

我是StackOverflow的新手,所以如果有更好的方法可以提出以下问题,请告诉我。

我需要创建一个正则表达式来检测数据库中的字段是否为数字,如果是数字,则它是否在有效范围内(即1-50)。我已经尝试了[1-50],除了单个数字前面带有0(即06)的情况之外,它有效。 06仍应被视为有效数字,因为我可以稍后将其转换为数字。

非常感谢你的帮助!我正在努力学习更多有关正则表达式的知识,并且一直在学习:www.regular-expressions.info。如果你们有其他网站推荐这些东西,我会很感激!

4 个答案:

答案 0 :(得分:16)

试试这个

^(0?[1-9])|([1-4][0-9])|(50)$

这个正则表达式的想法是将问题分解为案例

  • 0?[1-9]负责单个数字的情况,允许在0
  • 之前选择
  • [1-4] [0-9]负责10到49之间的所有数字。这也是一个数字上的前一个0的所有数字
  • 50照顾50

答案 1 :(得分:5)

正则表达式适用于字符(在本例中为数字),而不是数字。您需要为模式中的每个数字位数设置单独的模式,并将它们与|结合使用(OR运算符)就像其他答案所建议的那样。但是,请考虑检查文本是否为带正则表达式的数字(如[0-9]+),然后转换为整数并检查整数是否在范围内。

答案 2 :(得分:2)

您无法使用正则表达式轻松进行范围检查。您可以 - 通过一些工作 - 开发一种识别数字范围的模式,但它通常非常复杂,并且难以针对稍微不同的范围进行修改。

你最好把它分成两部分。

  1. 识别数字模式(^\d+$)。

  2. 检查应用程序中该号码的范围。

答案 3 :(得分:0)

^ 0?[1-50] {1,2} $