我是StackOverflow的新手,所以如果有更好的方法可以提出以下问题,请告诉我。
我需要创建一个正则表达式来检测数据库中的字段是否为数字,如果是数字,则它是否在有效范围内(即1-50)。我已经尝试了[1-50]
,除了单个数字前面带有0(即06)的情况之外,它有效。 06仍应被视为有效数字,因为我可以稍后将其转换为数字。
非常感谢你的帮助!我正在努力学习更多有关正则表达式的知识,并且一直在学习:www.regular-expressions.info。如果你们有其他网站推荐这些东西,我会很感激!
答案 0 :(得分:16)
试试这个
^(0?[1-9])|([1-4][0-9])|(50)$
这个正则表达式的想法是将问题分解为案例
答案 1 :(得分:5)
正则表达式适用于字符(在本例中为数字),而不是数字。您需要为模式中的每个数字位数设置单独的模式,并将它们与|结合使用(OR运算符)就像其他答案所建议的那样。但是,请考虑检查文本是否为带正则表达式的数字(如[0-9]+
),然后转换为整数并检查整数是否在范围内。
答案 2 :(得分:2)
您无法使用正则表达式轻松进行范围检查。您可以 - 通过一些工作 - 开发一种识别数字范围的模式,但它通常非常复杂,并且难以针对稍微不同的范围进行修改。
你最好把它分成两部分。
识别数字模式(^\d+$
)。
检查应用程序中该号码的范围。
答案 3 :(得分:0)
^ 0?[1-50] {1,2} $