正则表达式数值范围,例如1000 - 2000?

时间:2012-09-03 01:17:10

标签: php regex

我需要检查字符串的格式是否为:xxx [y-z]

其中y和z是两个数字。例如,可以是1000,z可以是2000,在这种情况下,这些将是有效的:

xxx1000 xxx1500 xxx1900 xxx2000

有没有办法在正则表达式中实现这一目标?

2 个答案:

答案 0 :(得分:2)

我没有看到在这里使用正则表达式的重点,特别是如果yz是变量。使用正则表达式来测试格式,但是然后取最右边的n个字符(在组中捕获它是最简单的),尝试将其解析为整数并测试它是否在范围内。

如果yz不变,请务必继续:

xxx(2000|1[0-9]{3})$

答案 1 :(得分:2)

如果你可以提供帮助,这种评估不应该真正属于正则表达式。您可以使用正则表达式对格式运行测试,但使用其他函数来测试内容:

$in = "xxx1234";
if( preg_match("/^xxx(\d{4})$/",$in,$m) && $m[1] >= 1000 && $m[1] <= 2000) {
    // ok!
}