我需要一个正则表达式来查找622126-622925之间的范围
^ 622 [126-925] $
答案 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之间如果...,某事在26到99之间。
同样适用于范围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)'
PS:如果你使用Javascript,你会发现更好的解决方案。