English 中文(简体)
在范围内的RegEx数字检查?
原标题:
  • 时间:2009-03-25 12:27:31
  •  标签:

我是StackOverflow的新手,请问是否有更好的方式来提出以下问题。

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

我非常感谢你的帮助!我正在尝试学习更多有关正则表达式的知识,并一直从网站www.regular-expressions.info中学习。如果你们有其他网站推荐我来加强对这方面的了解,我将不胜感激!

最佳回答

尝试一下 (cháng shì yí xià)

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

这个正则表达式的想法是将问题分解成不同的情况。

  • 0?[1-9] takes care of the single digit case allowing for an optional preceeding 0
  • [1-4][0-9] takes care of all numbers from 10 to 49. This also allwows for a preceeding 0 on a single digit
  • 50 takes care of 50
问题回答

正则表达式对字符(在这种情况下是数字)起作用,而不是数字。您需要为模式中的每个数字拥有一个单独的模式,并使用|(OR运算符)将它们组合起来,就像其他答案所建议的那样。但是,请考虑只使用正则表达式(如 [0-9]+ )检查文本是否为数字,然后将其转换为整数并检查整数是否在范围内。

你不能轻易地使用正则表达式进行范围检查。你可以通过一些努力开发出一个识别数字范围的模式,但通常相当复杂,并且很难针对略有不同的范围进行修改。

你最好把这分成两部分。

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

  2. 检查应用程序中该数字的范围。

^0?[1-50]{1,2}$ 的中文翻译为:^0?[1-50]{1,2}$





相关问题