我需要一个正则表达式来查找622126-622925之间的范围

时间:2011-03-10 10:53:41

标签: regex

我需要一个正则表达式来查找622126-622925之间的范围

^ 622 [126-925] $

6 个答案:

答案 0 :(得分:5)

假设包含范围:

^622(12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])$

但是RE并不是真正意义上的数字任务,所以我建议你找一个不同的解决方案。

答案 1 :(得分:4)

虽然你可以在理论上做到这一点,但是正则表达式会非常复杂,以至于它无法维护。

答案 2 :(得分:3)

^622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])$

<强>解释

前缀622很常见。删除它我们需要一个匹配126 - 925的正则表达式:

范围126-925可以拆分为:

  RANGE       REGEX
-----------------------------------------
126 - 129     12[6-9]
130 - 199     1[3-9][0-9]
200 - 899     [2-8][0-9][0-9]
900 - 919     9[0-1][0-9]
920 - 925     92[0-5]

显然,这不是这项工作的方式。一个简单的比较运算符就可以完成这项工作。

答案 3 :(得分:2)

可以做到,但结果会很难看。您真的是否需要使用正则表达式?

所以,无论如何:正如你正确观察到的那样,最初的622是直截了当的。现在,如果...

,则数字介于126和925之间
  1. ...从1开始,接着是26到99之间的东西;或
  2. ......它从2..8范围内的东西开始;或
  3. ...以9开头,然后是0..25。
  4. 范围内的内容

    如果...,某事在26到99之间。

    1. 以2开头,然后是6到9之间的东西;或
    2. 它以2..9。
    3. 范围内的某些东西开头

      同样适用于范围0..25。

      我会让你把各个部分放在一起,因为如果你要对自己造成这样的事情(或者无论谁维护代码),你应该自己找出它是多么痛苦。请再考虑一下:你真的需要用RE而不是其他方式吗?

答案 4 :(得分:2)

虽然这可能是可能的,但regexp并不是真正适合它的工具。最好将字符串转换为数字,并使用您正在使用的语言的正常数字比较。

答案 5 :(得分:0)

这对我有用:

'^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)'
  

来源:https://creditcardjs.com/credit-card-type-detection

PS:如果你使用Javascript,你会发现更好的解决方案。

相关问题